我有一个新闻网站,每天收到大约 58,000 次点击,包含 36,000 篇文章。在这 36000 个独特的故事中,30000 个仅获得 1 次点击(其中大部分是搜索引擎爬虫),只有 250 个故事获得超过 20 次展示。除了这 250 篇文章之外,缓存任何内容都是浪费内存。
目前我正在使用 MySQL Query Cache 和 xcache 进行数据缓存。该表每 5-10 分钟更新一次,因此单独使用查询缓存并没有多大用处。如何单独检测经常访问的页面并缓存数据?
我认为您可以有两种选择:
默认情况下,您不缓存任何内容。
您可以使用 Observer/Observable 模式实现一种在文章视图达到阈值时触发事件并开始缓存页面的方法。
您在创建时缓存每篇文章
在这两种情况下,您都可以使用 cron 来清除未达到您定义的阈值的文章。
在任何情况下,您都可能需要使用任何启发式方法来足够早地确定您的文章需要被缓存,并且在任何启发式方法中,您都会有误报,反之亦然。
这取决于你的内容是如何被阅读的,如果文章是实时新闻,它可能会很有效,因为它会很快产生高流量。
这些方法的主要问题是您需要存储额外的信息,例如上次访问日期时间及其当前页面浏览量,这可能会导致额外的查询。