我有一个网络服务,尽管我尽了最大努力进行调整,但仍然需要一段时间才能建立响应。
我想要的是在服务前面有某种缓存,它将始终返回来自服务的最后一个已知值,但同时将请求传回服务以便为下一个请求构建最新的响应。
我知道这会对数据的新鲜度造成限制,但你可以假设我很乐意接受这一点。
我目前使用的技术是通过 nginx 的 python uwsgi,但这不一定限制您可能建议的任何解决方案。
科尔
答案1
假设您想要一个反向代理,您可以使用圣人模式下的 Varnish 或带有 stale-if-error 指令的 squid。
如果您想要应用内缓存,例如使用 memcached,就不要依赖存储过期机制 - 使用缓存对象存储过期时间,array(cached_object=>object, expiry=>timestamp)
如果遇到陈旧的缓存则做出反应:将过期时间增加到现在 + 一点时间(以防止 dogpiling - 多个进程并行重新生成缓存),使用陈旧的缓存,初始化更新。