Отправка частичных обновлений / дополнений для (потенциально) очень больших текстовых файлов - PullRequest
0 голосов
/ 10 мая 2018

Допустим, UA запросил мой объединенный файл исходного кода размером 800 КБ и кэшировал его.Допустим, я добавил в этот файл новую функцию.

Как можно, чтобы UA получал только добавленную функцию и обновлял ее кэш, используя стандартные заголовки HTTP?Я явно не хочу, чтобы UA повторно загрузил все 800 КБ.

1 Ответ

0 голосов
/ 12 мая 2018

Если сервер и UA находятся под вашим контролем, вы можете реализовать RFC 3229 , который определяет протокол для этого.См. Раздел 10.7.3 для примеров.Однако имейте в виду, что RFC 3229 и RFC 7234 (на которых он основан) являются сложными спецификациями, которые легко ошибиться .

Если вы хотите взаимодействоватьс обычными UA (которые не поддерживают RFC 3229) нет прямого способа сделать то, что вы хотите.Вы можете подражать этому вручную.Например, если рассматриваемый «файл исходного кода» является файлом JavaScript для <script src>, то вместо изменения этого файла вы можете добавить еще один <script src> только для своей новой функции.Если вы ожидаете, что подобные изменения происходят часто, у вас может быть два <script src> с самого начала: один для большой, редко обновляемой базы, другой для частых небольших дополнений.Смотрите также еще один недавний вопрос по этому поводу: Идея решения для инкрементных обновлений с использованием кэша браузера

Также рассмотрите другие способы уменьшения сетевого трафика.Сжатие с помощью нового алгоритма Brotli , который все чаще поддерживается веб-браузерами, который экономит чуть больше, чем gzip .Если вас беспокоит всплеск использования полосы пропускания на стороне сервера, попробуйте постепенно развертывать обновления для пользователей, чтобы они не пытались извлечь весь файл одновременно.

...