Memcached 与 Apache - 处理陈旧的对象

Memcached with Apache - handling stale objects

我正在使用具有以下默认配置的 memcached 和 Apache

CacheEnable socache /
CacheSocache memcache:IP:PORT
MemcacheConnTTL 30

当 30 秒到期并且收到相同 URL 的请求时,行为会是什么?有没有办法配置缓存键? IE。使请求唯一的信息是什么? 如果服务器得不到答案怎么办? (比如超时获取新更新的对象)是否可以配置为旧对象提供服务?

谢谢

当 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 的哪些部分,查看 CacheIgnoreQueryStringCacheIgnoreURLSessionIdentifiers

即使请求唯一的信息是什么

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