бинарный формат

  • Автор темы Автор темы grigori
  • Дата начала Дата начала
По логам в sentry с разных проектов ни разу не видел проблем с частично полученным контентом.
Только в вебсокетах бывает, что фрейм, полученный не целиком, отдается в JS, да и это - только в старых версиях ios safari, и настолько редко, что какие-то проверки там добавлять смысла нет.
 
По логам в sentry с разных проектов ни разу не видел проблем с частично полученным контентом.
Только в вебсокетах бывает, что фрейм, полученный не целиком, отдается в JS, да и это - только в старых версиях ios safari, и настолько редко, что какие-то проверки там добавлять смысла нет.
Same here. За несколько лет видел ошибки разбора gzip на даже на jumbo frames всего раза три.
 
SSL тоннель обеспечивает целостность неявно. При повреждении соединение разрушается.
gzip так же обеспечивает проверку целостности неявно, но в зависимости от реализации клиента, можно получить обрезанный контент.
Если клиент поддерживает message checksumming https://tools.ietf.org/html/rfc3230 , можно обеспечивать явную проверку целостности.
Разрушение соединения подходит - у меня идет манифест каталога, на уровне приложения перезапрашивает.

rfc3230 - прикольно, не знал о нем, стандартные браузеры его поддерживают?
главная проблема - sha на js на мобильном считать не очень хочется
 
Последнее редактирование:
Ну, полифилл не подключится на chromium-based и ff, а это большинство. А вот какая там реализация - фиг его ж знает. Но скорее всего, тоже поверх XHR накрутили :)
 
в MDN написано, что fetch еще experimental и в следующих версиях не будет поддерживаться совместимость api
 
Ну, полифилл не подключится на chromium-based и ff, а это большинство. А вот какая там реализация - фиг его ж знает. Но скорее всего, тоже поверх XHR накрутили :)
боже упаси использовать fetch и прочую дрянь из es6, с обычным таймайтом вылазит куча проблем.
 
мои пять копеек. перетертый не до конца ветром кабель к wifi точке доступа на крыше может дать кучу не забываемых чудес .
Чтобы такое повторить нужно сильно по колдовать со шлюзом ;)
 
fetch не поддерживает отстановки по таймауту, надо городить свой через setTimeout, а так как fetch возвращает промис в интерфейсе которого не продуман внешний метод вроде abort-reject, то надо всё это дерьмо ещё завернуть во врапер с промисом
PHP:
   function timeout(time, promise) {
        return new Promise(function (resolve, reject) {
            promise.then(resolve);
            setTimeout(function () {
                reject(new Error('Timeout'));
            }, time);
        });
    }[
timeout(1000, fetch('....'));
Файл надо прицепить, опять городишь пристройку. В итоге как была куча библиотек и обёрток, так и осталось, плюс ещё надо полифилы подключать для альтернативных пользователей, бабели и т.д.. Подключаешь вебпак и тебе уже не хватает 8Г оперативки для разработки.
 
Уже несколько в офтоп ушли, тоже влезу... А с упомянутым protobuf в PHP кто-то работал, какую библиотечку использовали? google/protobuf не рабочая, у меня сразу падает с кучей ошибок и нотайсов, не стал разбираться. Попробовал centraldesktop/protobuf-php, но что-то она сгенерить классы нужные не может, генерилка падает...
 
промежуточный результат
сделал протокол вида json-csv: метаданные со структурой - отдельно, данные в многомерном массиве без ключей,
сравнил со стандартным json, в обоих случаях nginx отдавал данные в gzip и в https (tls 1.2), 40 тысяч записей, по 1000 записей в файле, 40 файлов
замерял tcpdump исходящие пакеты по 443 порту на локальном ip, то есть траффик с учетом хендшейков и http-заголовков

выигрыш json-csv составил 1.6 раза
предположение, что gzip нивелирует overhead от имен полей json и разделителей, не подтверждается

если интересно как замерять трафик по порту - могу написать
 
Последнее редактирование:
А насколько сильно там данные меняются со временем, в смысле постоянного наличия большого количества повторяемых подстрок?
Если не очень сильно, возможно, SDCH с заранее подготовленным словарем даст заметный профит. Он, правда, только в chromium-браузерах поддерживается, но их доля сейчас больше половины.
 
@fixxxer, 1% в день. Любопытный протокол. Только в IE нет поддержки.
Отличная идея - синкать словарь отдельно от данных, и дельта-изменения реализуются проще.
 
Последнее редактирование:
Сверху