Как вызвать обновление браузера HTML для кэшированных файлов HTML? - PullRequest
2 голосов
/ 27 декабря 2011

YSLOW предлагает: Для статических компонентов: внедрить политику «Никогда не истекает», установив заголовок Expires далекого будущего .... если вы используете заголовок Expires далекого будущего, вы должны менять имя файла компонента при каждом изменении компонента. В Yahoo! мы часто делаем этот шаг частью процесса сборки: номер версии встроен в имя файла компонента, например, yahoo_2.0.6.js. http://developer.yahoo.com/performance/rules.html

Я бы хотел использовать преимущества кэширования для моих в основном статических страниц и перезагружать js-файлы при изменении версии #. Я установил версию # для своих файлов .js, но моя страница main.html имеет Expires, установленный на будущее, поэтому он не перезагружается и, следовательно, не перезагружает файлы js. В идеале я хотел бы сказать браузеру (используя экстрасенсорную технику) перезагрузить main.html, когда выйдет новая версия сайта. Я мог бы сделать так, чтобы моя страница main.html всегда перезагружалась, но тогда я терял преимущество кэширования. Я не ищу ответ Ctrl-F5, поскольку это должно произойти автоматически для наших пользователей.

Я думаю, что ответ: main.html не может быть кэширован, но я хотел бы услышать, что другие делают для решения этой проблемы. Как вы получаете лучшее кеширование и преимущества перезагрузки.

Спасибо.

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Ваш анализ верен.Лучшие практики веб-производительности предполагают дату истечения срока давности для статических компонентов (т. Е. Тех, которые меняются не часто), а использование номера версии в URL-адресе прекрасно управляет этими изменениями.Для главной страницы (main.html) вы не установили бы дату истечения в будущем.Вместо этого вы не можете установить срок действия или установить его на минимальное время, например +24 часа.

0 голосов
/ 04 января 2012

Полагаю, это зависит от того, почему вы хотите кэшировать HTML-страницу - чтобы улучшить время загрузки пользователя или уменьшить нагрузку на сервер.

Даже с длительным сроком действия вы можете обнаружить, что он на самом деле не кэшируется на клиенте очень долго (исследования Yahoo показывают, что файлы не живут в кэше очень долго), поэтому более короткое время истечения, например, 1 день, может не быть проблемой.

Чтобы уменьшить нагрузку на бэкэнд, возможно, стоит посмотреть, поможет ли прокси-сервер, такой как Varnish, то есть он будет кэшировать страницы с исходного сервера, когда он их запрашивает. Таким образом, вы можете контролировать длительность кэширования страниц с более высоким уровнем контроля.

...