Memcached с apache - обработка устаревших объектов

Я использую memcached и Apache со следующей конфигурацией по умолчанию

CacheEnable socache /
CacheSocache memcache:IP:PORT
MemcacheConnTTL 30

Что будет, если по истечении 30 секунд поступит запрос на тот же URL-адрес? Есть ли способ настроить ключ кеша? Т.е. Какая информация делает запрос уникальным? Что делать, если сервер не может получить ответ? (например, тайм-аут для получения недавно обновленного объекта) Можно ли настроить его для обслуживания старого объекта?

Спасибо

0
0
650
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Каково будет поведение, когда истечет 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 с memcache, используя socache_memcache? Спасибо!

JoeSlav 10.11.2018 08:46

да. «Используя модуль mod_cache_socache, mod_cache может кэшировать данные из различных реализаций (также известных как« поставщики »). Используя модуль mod_socache_memcache, например, можно указать, что memcached будет использоваться в качестве механизма внутреннего хранилища» отсюда httpd.apache.org/docs/2.4/caching.html

ffeast 10.11.2018 11:30

Другие вопросы по теме