Я использую memcached и Apache со следующей конфигурацией по умолчанию
CacheEnable socache /
CacheSocache memcache:IP:PORT
MemcacheConnTTL 30
Что будет, если по истечении 30 секунд поступит запрос на тот же URL-адрес? Есть ли способ настроить ключ кеша? Т.е. Какая информация делает запрос уникальным? Что делать, если сервер не может получить ответ? (например, тайм-аут для получения недавно обновленного объекта) Можно ли настроить его для обслуживания старого объекта?
Спасибо
Apache просто создаст новое соединение с memcached. Это не значит, что с данными, хранящимися в memcached, что-то случится.
https://httpd.apache.org/docs/2.4/mod/mod_socache_memcache.html#memcacheconnttl
Set the time to keep idle connections with the memcache server(s) alive (threaded platforms only).
Если вам нужно контролировать, как долго объект будет храниться в кеше, посмотрите CacheDefaultExpire
.
URL-адрес используется для создания ключа, но вы можете частично настроить, какие части URL-адреса используются, проверьте
CacheIgnoreQueryString
, CacheIgnoreURLSessionIdentifiers
https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheenable
The CacheEnable directive instructs mod_cache to cache urls at or below url-string
Обратите внимание, что не все запросы можно кэшировать, для этого существует множество правил.
Вам нужен CacheStaleOnError
https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cachestaleonerror
When the CacheStaleOnError directive is switched on, and when stale data is available in the cache, the cache will respond to 5xx responses from the backend by returning the stale data instead of the 5xx response
да. «Используя модуль mod_cache_socache, mod_cache может кэшировать данные из различных реализаций (также известных как« поставщики »). Используя модуль mod_socache_memcache, например, можно указать, что memcached будет использоваться в качестве механизма внутреннего хранилища» отсюда httpd.apache.org/docs/2.4/caching.html
Спасибо. Должен ли я понять из вашего ответа, что я действительно могу объединить директивы mod_cache с memcache, используя socache_memcache? Спасибо!