URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6110
[ Назад ]

Исходное сообщение
"Проблема кеширования js и css"

Отправлено Bayly , 08-Дек-08 04:03 
Опишу проблему. Есть достаточно посещаемый ресурс. Понятное дело, что в htaccess настроено кеширование js и css файлов.
Например:Header set Cache-Control "max-age=604800, public"
Это ощутимо ускоряет отображение страниц. Но периодически на сайте проводяться разные работы, что-то меняется. В результате содержимое этих самых js и css файлов дополняется. Пользователь, у которого они закешированы старые версии в результате видит ошибки джаваскрипта или подгулявшую верстку.

Итак вопрос. Как сохранить кеширование, но чтобы загружались новые версии файлов css/js, как только они изменятся?
Понятно, что можно отключить кеширование по времени и сервер будет ориентироваться на значение ETAG, но хочется избежать и таких HTTP запросов тоже.


Содержание

Сообщения в этом обсуждении
"Проблема кеширования js и css"
Отправлено Pilgrim , 08-Дек-08 07:23 
>Итак вопрос. Как сохранить кеширование, но чтобы загружались новые версии файлов css/js,
>как только они изменятся?
>Понятно, что можно отключить кеширование по времени и сервер будет ориентироваться на
>значение ETAG, но хочется избежать и таких HTTP запросов тоже.

Если не видел, почитай: http://developer.yahoo.com/performance/rules.html#expires


"Проблема кеширования js и css"
Отправлено Artyk , 11-Дек-08 19:42 
>Итак вопрос. Как сохранить кеширование, но чтобы загружались новые версии файлов css/js,
>как только они изменятся?
>Понятно, что можно отключить кеширование по времени и сервер будет ориентироваться на
>значение ETAG, но хочется избежать и таких HTTP запросов тоже.

При подключении CSS+JS файлов в HTML добавляй в путь дату модификации файла.
Например, http://URL/mu.js?ver=123456, где 123456 берем из filemtime($filename).

Пока файл не изменялся, действует кеширование. Как только файл обновился — он будет перечитан заново. Не забываем очищать кеш HTML страниц перед этим, если он, конечно, реализован. Проблемы как рукой снимет ;-)
По крайней мере, такую реализацию я видел в FarbaSite cms.