只是寻找一条建议.在我们的一个网页上,我们有一个辩论/论坛网站.每当用户请求辩论页面时,他/她将获得所有主题的列表(以及他们的答案计数等).
当用户请求特定主题/线程时,线程的所有答案将向用户显示长的用户名,用户图片,年龄,来自答案海报的总论坛帖子的数量.
每次访问页面时,都会使用MySQL查询检索所有内容.但是这开始变得非常缓慢(特别是对于大线程,3000个答案).
我想以某种方式缓存辩论条目,以加快这个过程.然而问题是,如果我自己缓存条目,帖子的数量等(当然是动态的),并不总是最新的.
有什么聪明的方法来缓存页面/在这样的东西更新时回收它们吗? 🙂
提前致谢,
菲舍尔
最佳答案 您应该根据缓存的数据为缓存创建标记或名称.
例如,对于名为Jake’s Post的帖子,您可以创建名称的md5,这将为您提供标签49fec15add24931728652baacc08b8ee.
现在缓存内容以及与标签49fec15add24931728652baacc08b8ee相关的所有内容.更新帖子或添加评论后,请转到缓存并删除与49fec15add24931728652baacc08b8ee关联的所有内容.
现在没有缓存,当下一个访问者到达新帖子时,它将被重建.
你可以通过每个帖子有多个标签来进一步分解.例如,您可以为评论和答案添加标签,添加评论时删除评论标签,但不删除答案标签.这减少了服务器在重建缓存时必须执行的工作,因为现在只缺少注释.
有许多库和框架可以帮助您完成此任务.
可靠的人
编辑
我使用文件来存储数据,更具体地说是页面的HTML输出.然后你可以这样做:
if(file_exists($tag))
{
// Load the contents of the cache file here and output it
}
else
{
// Do complex database look up and cache the file for later
}
请记住,像Zend这样的框架内置了这种东西.我会认真考虑使用框架.