如何正确地使缓存失效?

8
我有一个非常具体的缓存情况。我们使用多种缓存解决方案,我想知道在用户操作上失效缓存的最佳解决方法是什么。
缓存如下:
第一层:CDN将完整页面作为HTML对于未登录的用户进行缓存。
第二层:对于未登录的用户,在memcached中缓存完整页面 我有第二层的原因是响应边缘,有时不是所有边缘都被缓存,所以我也希望从缓存中“回答”边缘。
第三层:为已登录的用户缓存HTML部分和数据库数据。
我的问题是,我的无效处理过程很大程度上基于第三层,而我没有很好地回答第二层和第一层。
我的问题是:从与URL绝对没有耦合的缓存密钥上,失效全URL的缓存的最佳方法是什么?例如,如果我有一个旅行计划,在旅行计划中有评论,当用户发表新评论时,我希望失效完整的旅行计划URL。
评论模型没有URL,并且“父级”也没有URL,相同的评论也会出现在城市页面中,因此它完全是一个可重用对象和部分。
1个回答

3
我在37signals的博客上阅读了David Heinemeier Hansson写的一些博客文章。
他们对这个问题的解决方法是缓存页面上的所有不同对象,然后使用CSS和JS来自定义视图。
  • 第一篇文章中,DHH介绍了他们用来使Basecamp新界面如此快速的技术。
  • 第二篇文章中,他介绍了关键字过期的工作原理。
这可能无法解决您的问题,但根据您提供的描述,我认为它至少可以给您一些提示。

2
这其实是一个非常好的解决方案,改变了我对缓存的思考方式。如果发起此帖子的人还没有阅读这些帖子,他应该这样做。听起来正是他所需要的(如果某些内容发生更改,则使整个页面失效)。 - Rob Cameron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接