Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программное обеспечение Linux и FreeBSD » Apache 2.2: не работает (ExpiresByType text/html) для динамических страниц

Ответить
Настройки темы
Apache 2.2: не работает (ExpiresByType text/html) для динамических страниц

Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Apache 2.2 + Debian
В настройках Apache прописываю директивы кэширования (для надёжности - в самом конце главного конфигурационного файла /etc/apache2/apache2.conf, т.к. в самом файле подключается множество других конфигов).

- После изменения конфигов Apache всегда перезапускаю.
- Перед всеми (ExpiresByType ...), и (Header set Cache-Control ...) директива (ExpiresActive on) стоит (иначе бы Expires не устанавливались для css, js и картинок)
- Модули mod_headers и mod_expires подключены (иначе бы Expires не устанавливались для css, js и картинок)

Для css, js и картинок никаких проблем не возникает - работает и (ExpiresByType ...), и (Header set Cache-Control ...).

Но для динамических html (формируемых php-скриптами) имеют место следующие проблемы:

1) не работает директива (ExpiresByType text/html), например (последний пример - из официальной справки):
Код: Выделить весь код
ExpiresByType text/html "access plus 30 minuts"
ExpiresByType text/html "access plus 6 months"
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
2) Указание этих директив для text/html, равно как и не указание, приводит к тому, что отправляются следующие заголовки:
Код: Выделить весь код
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Такие заголовки отправляются тогда, когда указывается директива ExpiresByType text/html "access 0 seconds". Но в конфиге указывается другое время (вполне конкретное).

3) Если в конфиге прописать:
Код: Выделить весь код
<FilesMatch \.(html|htm|php)$>
    Header set Cache-Control "max-age=3600"
</FilesMatch>
то Expires по-прежнему соответствует нулевому времени, но наши заголовки при этом добавляются к (no-store, no-cache, must-revalidate, post-check=0, pre-check=0) (не перезаписывают, а именно добавляются):
Код: Выделить весь код
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=3600
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Итог
Со статическими html-файлами никаких проблем не наблюдается. Специально проверил.
В то же время, во всех приведённых примерах в качестве момента отсчёта времени указывается не modification (в этом случае для динамических html кэширования бы не работало), а access.

Почему (ExpiresByType text/html) не работает с динамическим html ?

А вернее, как-то в фоновом режиме им пропиывается нулевое время. Да так, что даже Header set Cache-Control "max-age ..." не может этот header перезаписать (только добавляет, тогда как со статикой - перезаписывает).

Отправлено: 15:34, 01-11-2015

 


Компьютерный форум OSzone.net » Linux и FreeBSD » Программное обеспечение Linux и FreeBSD » Apache 2.2: не работает (ExpiresByType text/html) для динамических страниц

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HTML код вместо страниц. Lycher Лечение систем от вредоносных программ 1 17-08-2012 10:54
Разное - [решено] Не могу просмотреть HTML-код страниц в Интернете Мамелюк Microsoft Windows 2000/XP 2 26-07-2009 15:01
[решено] Создание динамических страниц на статичном носителе DMGaster Вебмастеру 11 14-01-2007 16:07
Delphi - Печать из Delphi HTML страниц Serg AS Программирование и базы данных 4 11-06-2003 19:06
Проблема с русским шрифтом HTML-страниц в IE 6 Ant Вебмастеру 12 03-03-2003 17:56




 
Переход