Как заставить клиентов обновить файлы JavaScript? - PullRequest
540 голосов
/ 28 августа 2008

В настоящее время мы работаем в частной бета-версии и поэтому все еще в процессе внесения довольно быстрых изменений, хотя очевидно, что, поскольку использование начинает расти, мы будем тормозить этот процесс. При этом одна из проблем, с которой мы сталкиваемся, заключается в том, что после выпуска обновления с новыми файлами JavaScript клиентские браузеры по-прежнему используют кэшированную версию файла и не видят обновления. Очевидно, что при обращении в службу поддержки мы можем просто сообщить им, чтобы они обновили ctrl F5 , чтобы они получали последние файлы с сервера, но это будет желательно справиться с этим до того времени.

Наша текущая идея состоит в том, чтобы просто прикрепить номер версии к имени файлов JavaScript, а затем, когда изменения будут внесены, увеличить версию сценария и обновить все ссылки. Это определенно выполнит свою работу, но обновление ссылок на каждый релиз может стать громоздким.

Поскольку я уверен, что мы не первые, кто сталкивается с этим, я подумал, что передам это сообществу. Как вы гарантируете, что клиенты обновляют свой кеш при обновлении кода? Если вы используете метод, описанный выше, вы используете процесс, который упрощает изменение?

Ответы [ 23 ]

0 голосов
/ 17 сентября 2008

Самое простое решение? Не позволяйте браузеру кешировать вообще. Добавьте текущее время (в мс) в качестве запроса.

(Вы все еще в бета-версии, поэтому вы можете обоснованно не оптимизировать производительность. Но YMMV здесь.)

0 голосов
/ 06 января 2017

Один простой способ. Изменить htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.(jpe?g|bmp|png|gif|css|js|mp3|ogg)$ [NC]
RewriteCond %{QUERY_STRING} !^(.+?&v33|)v=33[^&]*(?:&(.*)|)$ [NC]
RewriteRule ^ %{REQUEST_URI}?v=33 [R=301,L]
0 голосов
/ 13 мая 2009

Преимущество использования file.js?V=1 перед fileV1.js заключается в том, что вам не нужно хранить несколько версий файлов JavaScript на сервере.

Проблема, с которой я сталкиваюсь при file.js?V=1, заключается в том, что у вас может быть зависимый код в другом файле JavaScript, который ломается при использовании новой версии библиотечных утилит.

Ради обратной совместимости, я думаю, гораздо лучше использовать jQuery.1.3.js для ваших новых страниц и позволить существующим страницам использовать jQuery.1.1.js, пока вы не будете готовы обновить старые страницы, если это необходимо.

...