Я должен заставить mod_cache_disk кэшировать сайт, содержащий строки запроса. Проблема - то, что это - продукт поставщика на IIS, который мы пытаемся кэшировать через mod_proxy, и это не содержит, истекает заголовки. Я понимаю, что эта проблема нарушает несколько RFCs, и вот почему апач не делает этого по умолчанию.
Существует ли способ вынудить апача 2.4.x кэшироваться со строкой запроса и не истекает заголовок?
Эта конфигурация будет кэшироваться, но конечно без удостаивания? это кэширует неправильное содержание для большинства объектов.
CacheEnable disk https://
CacheEnable disk /
CacheRoot /var/cache/mod_proxy/
CacheDirLevels 4
CacheDirLength 5
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheIgnoreHeaders None
CacheMaxFileSize 100000000
CacheMinFileSize 1
CacheMaxExpire 1209600
CacheDefaultExpire 3600
CacheIgnoreQueryString On
CacheStoreNoStore On
CacheStorePrivate On
Если я изменюсь, то CacheIgnoreQueryString к От него начнет испускать ошибки о, истекает заголовок.
AH00768: кэш:/view.image? Id=1114, не кэшируемый. Причина: существующая Строка запроса, но никакое явное время истечения срока,
Согласно этот ответ единственный способ сделать это - позволить Apache видеть нужные ему заголовки (Expires, как вы указали, и, по-видимому, также Last-Modified) .
Автор этого ответа предлагал написать фильтр на стороне приложения, но, поскольку ваш продукт является продуктом поставщика, это может быть невозможно. Есть возможность добавить прямо в IIS? В противном случае вам может повезти с настройкой двойного прокси: используйте один прокси для добавления заголовков (но не кеширования) и прокси , который от Apache (беря заголовки и кеширование).
тоа е моето решение
<IfModule mod_cache.c>
CacheIgnoreNoLastMod On
CacheIgnoreHeaders Set-Cookie
<IfModule mod_disk_cache.c>
CacheRoot D:\\apache_cache
CacheEnable disk /
CacheDirLevels 1
CacheDirLength 1
</IfModule>
</IfModule>
и од задната страна додадете заглавие
Cache-Control:s-maxage=1200
s-максимум - за мемории за прокси и ЦДН
Наиболее очевидным решением было бы снять строку запроса до того, как она достигнет mod_cache
.
А самым очевидным модулем для этого был бы mod_rewrite
.
Но что не сработает , так как mod_cache
начал целенаправленно использовать неизмененную версию строки запроса в 2006.