Я использую mod_pagespeed с mod_cache.
Когда mod_pagespeed выключен, а mod_cache выключен, я вижу следующий заголовок:
cache-control: общедоступный, max-age = 7200, необходимо перепроверить
Когда mod_pagespeed включен, а mod_cache выключен, я вижу следующий заголовок в ответе:
cache-control: max-age = 0, no-cache, необходимо перепроверить
Как и ожидалось, Pagespeed переписал управление кешем.
Однако, когда включен mod_pagespeed и включен mod_cache, я вижу следующее:
cache-control: общедоступный, max-age = 7200, необходимо перепроверить
Согласно документам:
«По умолчанию PageSpeed обслуживает весь HTML с Cache-Control: no-cache, max-age = 0, потому что преобразования, сделанные на странице, могут не кэшироваться в течение длительного периода времени».
Почему HTML-код обслуживается как кешируемый, когда включены mod_pagespeed и mod_cache?
Похоже, есть ошибка при запуске mod_pagespeed 1.11.33.2-0 с Apache Httpd 2.4.23 с запущенным mod_cache.
По какой-то причине mod_pagespeed не перезаписывает заголовки кеша, что делает HTML общедоступным.
Обходной путь, который я использовал, заключался в том, чтобы виртуальный хост на порту 81 работал как кэширующий сервер без скорости страницы.
<VirtualHost *:81>
ProxyPass / ajp://tomcat-ipaddress:8009/
ProxyPassReverse / https://final-hostname/
ModPagespeed off
RemoteIPHeader X-Forwarded-For
CacheEnable disk /
CacheHeader on
</VirtualHost>
На виртуальном хосте 443 или 80 вы можете проксировать хост на 81.
<VirtualHost _default_:443>
ProxyPass / http://localhost:81/
ProxyPreserveHost On
ModPagespeed on
ProxyPassReverse / https://final-hostname/
Потому что по умолчанию mod_cache работает в режиме быстрого обработчика:
http://httpd.apache.org/docs/current/mod/mod_cache.html#cachequickhandler
что означает, что он касается ответа "последним" после того, как mod_pagespeed выполнил свои преобразования.
Использовать
CacheQuickHandler off
AddOutputFilterByType ...
пример для заказа фильтров по мере необходимости.