【问题标题】:Memcached with Apache - handling stale objectsMemcached 与 Apache - 处理陈旧的对象
【发布时间】:2019-04-04 13:38:52
【问题描述】:

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

CacheEnable socache /
CacheSocache memcache:IP:PORT
MemcacheConnTTL 30

当 30 秒过期并且对相同 URL 的请求进入时,会发生什么行为?有没有办法配置缓存键? IE。使请求独一无二的信息是什么? 如果服务器无法得到答案怎么办? (比如超时获取新更新的对象)可以配置为服务旧对象吗?

谢谢

【问题讨论】:

    标签: apache memcached


    【解决方案1】:

    当 30 秒过期并且对相同 URL 的请求进入时会发生什么情况

    Apache 会简单地创建一个到 memcached 的新连接。这并不意味着存储在 memcached 中的数据会发生问题

    https://httpd.apache.org/docs/2.4/mod/mod_socache_memcache.html#memcacheconnttl

    设置与内存缓存服务器保持空闲连接的时间 活着(仅限线程平台)。

    如果您需要控制对象在缓存中的存储时间,请查看CacheDefaultExpire

    有没有办法配置缓存键

    一个 url 用于构建密钥,但您可以部分配置使用 url 的哪些部分,查看 CacheIgnoreQueryString, CacheIgnoreURLSessionIdentifiers

    即使请求独一无二的信息是什么

    https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheenable

    CacheEnable 指令指示 mod_cache 将 url 缓存在或 下面的 url 字符串

    注意不是所有的请求都可以缓存,有很多规则在上面

    如果服务器无法得到答案怎么办?是否可以配置为服务旧对象

    你需要CacheStaleOnError

    https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cachestaleonerror

    当 CacheStaleOnError 指令打开时,以及陈旧时 数据在缓存中可用,缓存将响应 5xx 通过返回陈旧数据而不是来自后端的响应 5xx 响应

    【讨论】:

    • 谢谢。我是否从您的回复中了解到我确实可以使用 socache_memcache 将 mod_cache 指令与 memcache 结合起来?谢谢!
    • 是的。 “使用 mod_cache_socache 模块,mod_cache 可以缓存来自各种实现(又名:“提供者”)的数据。例如,使用 mod_socache_memcache 模块,可以指定将 memcached 用作后端存储机制“来自这里 @ 987654324@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2015-11-29
    相关资源
    最近更新 更多