假设我们有 blog 的 category A
。类别A
目前在 100 页上有 1000 个帖子。所有页面都缓存在文件中(例如,由 Smarty 模板引擎缓存)。我正在添加帖子并希望它立即显示在第一页上。因此,我必须清除或使所有 100 个 A 类页面的缓存无效。
删除缓存页面不是一个好主意,因为我们可能有太多文件(例如,数千个页面)。我认为使缓存无效并根据请求重新生成页面是更有效的方法。
我唯一的想法是添加number of posts in category
到缓存ID。因此,首先我们应该获取类别中的帖子数量(例如,来自 memcache),然后检查缓存版本是否通过该数量有效。
一切看起来都很好而且很简单。但是让我们想象一下我添加新帖子然后在 1 分钟后删除另一个(旧)帖子的情况。帖子数量仍为 1000,并且某些类别页面将保持旧状态(如果在这 1 分钟内未查看它们)。
解决办法是什么?
PS:对不起我的英语,但我认为我的问题对于已经遇到过此类问题的人来说会很清楚。
谢谢