缓存总是立即返回响应吗?

缓存总是立即返回响应吗?

我有一个网络服务,尽管我尽了最大努力进行调整,但仍然需要一段时间才能建立响应。

我想要的是在服务前面有某种缓存,它将始终返回来自服务的最后一个已知值,但同时将请求传回服务以便为下一个请求构建最新的响应。

我知道这会对数据的新鲜度造成限制,但你可以假设我很乐意接受这一点。

我目前使用的技术是通过 nginx 的 python uwsgi,但这不一定限制您可能建议的任何解决方案。

科尔

答案1

假设您想要一个反向代理,您可以使用圣人模式下的 Varnish 或带有 stale-if-error 指令的 squid。

如果您想要应用内缓存,例如使用 memcached,就不要依赖存储过期机制 - 使用缓存对象存储过期时间,array(cached_object=>object, expiry=>timestamp)如果遇到陈旧的缓存则做出反应:将过期时间增加到现在 + 一点时间(以防止 dogpiling - 多个进程并行重新生成缓存),使用陈旧的缓存,初始化更新。

相关内容