Развертывание обновленных файлов Javascript - PullRequest
6 голосов
/ 22 февраля 2011

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

Ответы [ 4 ]

5 голосов
/ 22 февраля 2011

Обычно ваши статические ресурсы должны быть версионными и обслуживаться через URL, такие как /static.js?ver=123. Так что все, что вам нужно, это увеличить номер версии. Возьмите, к примеру, тот же самый сайт, просмотрите источник, и вы увидите следующее в разделе <head>:

<script type="text/javascript" src="http://sstatic.net/js/master.min.js?v=689f646cde8d"></script>
4 голосов
/ 22 февраля 2011

Если все соответствует спецификациям, вам не нужно делать ничего особенного.HTTP уже имеет механизмы для обработки этого.Браузер должен отправить заголовок If-Modified-Since с датой получения или заголовок If-None-Match с ETag кэшированной копии.Сервер проверит время модификации (или ETag, который должен включать время модификации в расчете) файла на сервере и, если время мода меньше, чем задано браузером, или ETag совпадет, вернет304 Не модифицированный ответ.Браузер должен использовать свою кэшированную копию только тогда, когда он получает ответ 304.

Единственная проблема в этом - кэширование прокси-серверов, которые либо игнорируют любой предоставленный сервером заголовок Expires, либо предполагают, что он будет исправен в будущем, если его не дать., в этом случае вы можете отправить Cache-Control заголовок с директивой must-revalidate .

Конечно, браузеры или прокси могут не соответствовать,в этом случае другие ответы показывают, как заставить браузер повторно извлечь ресурс.

1 голос
/ 22 февраля 2011

Если вы используете php

<link rel="stylesheet" 
    href="<?php echo './general.css?' . filemtime('./general.css'); ?>"
    type="text/css" media="screen, projection" />

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

С другими языками должно быть одинаковым.

0 голосов
/ 22 февраля 2011

Изменение URL-адреса в документах HTML, включающих JS.

Добавление числа (например, версия, версия контроля версий, отметка времени) к строке запроса является распространенным методом.

Дляпример: src="/js/myjs.js?7"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...