Интеллектуальное решение для заголовков с истекающим сроком действия

#header #http-headers #http-caching

#заголовок #http-заголовки #http-кэширование

Вопрос:

Мы хотим установить заголовки с истекшим сроком действия для используемых изображений, css и javascript, чтобы улучшить скорость просмотра страниц, но мы знаем о проблеме кэширования при изменении скрипта css или js.

Возможно ли добавить meta или другой тег в файл, который загружает xhtml, который сообщает браузеру обновлять каждый элемент, независимо от того, какое кэширование установлено для существующих изображений, css или js?

Ответ №1:

Насколько я знаю, такого ярлыка нет.

И даже если бы это было так — какой был бы смысл? Отправка такого заголовка в первую очередь перечеркнула бы назначение заголовка будущего истечения срока действия.

При настройке заголовков с истекшим сроком действия вам необходимо добавить к вашим элементам какое-либо управление версиями ресурсов, например <link rel="stylesheet" href="css/style.css?v=2">

Изменение пути к ресурсу достигло бы той же цели.

Да, это проблема. Но аннулирование кэша — сложная проблема, простого способа обойти ее действительно нет.

Ответ №2:

Что вы, вероятно, хотите сделать, так это обновить свой статический контент. допустим, у вас есть файл main.css, тогда вы можете изменить его, переименовав в main_0.css (просто пример), и тогда вы установили бы срок действия кэша равным году. если вам когда-нибудь понадобится обновить main.css, просто увеличьте номер версии и обновите свои ссылки. Тогда все клиенты получат последнюю версию.

Существует несколько решений, которые могут выполнить это управление версиями за вас, но это основной принцип..

Я всегда находил эти ресурсы очень полезными при возникновении вопросов, связанных с кэшем:

  1. http://code.google.com/intl/no/speed/page-speed/docs/caching.html
  2. http://code.google.com/intl/no/speed/page-speed/docs/filters.html

Надеюсь, это поможет.

Редактировать

Вот решение для управления версиями (mod_pagespeed), которое выполняет то, что я объяснил выше:

  1. http://code.google.com/intl/no/speed/page-speed/docs/filter-cache-extend.html

Комментарии:

1. Мне нравится ваша правка, но есть ли что-нибудь подобное для IIS, которое делает то же самое?

2. Я не в курсе, на вашем месте я бы просто установил apache2 mod_pagespeed и перенаправлял запросы в IIS

Ответ №3:

Возможно ли добавить meta или другой тег в файл, который загружает xhtml, который сообщает браузеру обновлять каждый элемент, независимо от того, какое кэширование установлено для существующих изображений, css или js?

Насколько мне известно, нет.

Мы хотим установить заголовки с истекшим сроком действия для используемых изображений, css и javascript, чтобы улучшить скорость просмотра страниц

На мой взгляд, это хорошая вещь.

но мы знаем о проблеме кэширования при изменении скрипта css или js.

Если вы вносите радикальные изменения в CSS или JS, то вам в любом случае следует выполнять промежуточные изменения. Управляйте этими изменениями, установив новые CSS и JS по другому пути и изменив ссылки в вашем HTML при внесении изменений. Это позволяет вам:

  • мгновенное развертывание / возврат
  • выполняйте выборочные развертывания, динамически генерируя эти ссылки
  • веб-журналы теперь предоставляют четкий журнал аудита для отслеживания отчетов об ошибках
  • избегайте любых проблем с краткосрочным кэшированием CSS и JS