Http кеширование - style.css? 123 или style_123.css? - PullRequest
4 голосов
/ 19 января 2010

В настоящее время я работаю со скриптом сборки / развертывания для минимизации статических ресурсов.Следуя хорошей практике, я бы хотел установить заголовок expire в будущем для большинства моих javascript, таблиц стилей и изображений.

На мой вопрос, когда один или несколько статических файлов изменились, клиенты должны запросить самую новую версию файла.Достаточно ли будет добавить что-то вроде /css/style.css ? 1235 после URL, чтобы вызвать новый запрос?Или мне нужно переименовать все мои статические файлы для каждой сборки (что-то вроде / css / style _12345 .css)?

Обновление: просто чтобы уточнить причину, по которой я спрашиваюЯ заметил, что многие другие сценарии развертывания выбирают «жесткий» путь, переименовывая каждый файл.

Ответы [ 3 ]

3 голосов
/ 19 января 2010

Будет добавление что-то вроде /css/style.css? 1235 после URL достаточно, чтобы вызвать новый запрос?

Да, конечно.

Вы можете сделать это так:

style.css?UNIXTIMESTAMP

где UNIXTIMESTAMP - время создания файла в формате отметки времени unix

2 голосов
/ 19 января 2010

RFC 2616 3.2. Унифицированные идентификаторы ресурса говорит:

Что касается HTTP, то универсальные идентификаторы ресурсов - это просто отформатированные строки, которые идентифицируют - через имя, местоположение или любую другую характеристику - ресурс.

Итак, http://foo/bar - это ресурс, отличный от http://foo/bar?baz.

Некоторые URI считаются эквивалентными, поэтому http://foo/bar?baz - это тот же ресурс, что и http://foo/bar?BAZ (см. 3.2.3 Сравнение URI ).

HTTP содержит некоторые исключения кэширования для обработки части запроса (см. 13.9 Побочные эффекты GET и HEAD ). Я понимаю, что это относится только к одному и тому же запросу.

0 голосов
/ 19 января 2010

если вы можете использовать mod_rewrite, я добавлю правило, подобное этому:

RewriteRule ^/((.*)_[0-9]+(\.(?:js|css|swf).*))$ /$2$3 [NC,L]

, который переписывает любой файл javascript, css или flash обратно на исходное имя, поэтому

/css/style_1234.css

переписывается обратно на

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