#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, просто увеличьте номер версии и обновите свои ссылки. Тогда все клиенты получат последнюю версию.
Существует несколько решений, которые могут выполнить это управление версиями за вас, но это основной принцип..
Я всегда находил эти ресурсы очень полезными при возникновении вопросов, связанных с кэшем:
- http://code.google.com/intl/no/speed/page-speed/docs/caching.html
- http://code.google.com/intl/no/speed/page-speed/docs/filters.html
Надеюсь, это поможет.
Редактировать
Вот решение для управления версиями (mod_pagespeed), которое выполняет то, что я объяснил выше:
Комментарии:
1. Мне нравится ваша правка, но есть ли что-нибудь подобное для IIS, которое делает то же самое?
2. Я не в курсе, на вашем месте я бы просто установил apache2 mod_pagespeed и перенаправлял запросы в IIS
Ответ №3:
Возможно ли добавить meta или другой тег в файл, который загружает xhtml, который сообщает браузеру обновлять каждый элемент, независимо от того, какое кэширование установлено для существующих изображений, css или js?
Насколько мне известно, нет.
Мы хотим установить заголовки с истекшим сроком действия для используемых изображений, css и javascript, чтобы улучшить скорость просмотра страниц
На мой взгляд, это хорошая вещь.
но мы знаем о проблеме кэширования при изменении скрипта css или js.
Если вы вносите радикальные изменения в CSS или JS, то вам в любом случае следует выполнять промежуточные изменения. Управляйте этими изменениями, установив новые CSS и JS по другому пути и изменив ссылки в вашем HTML при внесении изменений. Это позволяет вам:
- мгновенное развертывание / возврат
- выполняйте выборочные развертывания, динамически генерируя эти ссылки
- веб-журналы теперь предоставляют четкий журнал аудита для отслеживания отчетов об ошибках
- избегайте любых проблем с краткосрочным кэшированием CSS и JS