只是寻求一条建议。在我们的一个网页上,我们有一个辩论/论坛网站。每次用户请求辩论页面时,他/她都会获得所有主题的列表(以及他们的答案数量等)。
当用户请求特定主题/主题时,该主题的所有答案都将显示给用户,其中包含用户名、用户图片、年龄、来自答案发布者的论坛帖子总数。
当前每次访问页面时都使用 MySQL 查询检索所有内容。但是,这开始变得非常缓慢(尤其是对于大线程,+3000 个答案)。
我想以某种方式缓存辩论条目,以加快此过程。但是问题是,如果我自己缓存条目、帖子数量等(当然是动态的),将不会总是最新的。
当这样的东西更新时,有没有什么聪明的方法来缓存页面/重新缓存它们? :)
提前致谢, 菲舍尔
最佳答案
您应该根据缓存的数据为缓存创建标签或名称。
例如,对于名为 Jake's Post 的帖子,您可以创建名称的 md5,这将为您提供标签 49fec15add24931728652baacc08b8ee。
现在针对标签 49fec15add24931728652baacc08b8ee 缓存与此帖子有关的内容和所有内容。当帖子更新或添加评论时,转到缓存并删除与 49fec15add24931728652baacc08b8ee 相关的所有内容。
现在没有缓存,当下一个访问者到达新帖子时,它将被重建。
您可以通过为每个帖子设置多个标签来进一步分割。例如,您可以为评论和答案添加标签,添加评论时删除评论标签,而不是答案标签。这减少了服务器在重建缓存时必须做的工作,因为现在只缺少注释。
有许多库和框架可以帮助您做到这一点。
jack
编辑
我会使用文件来存储数据,更具体地说是页面的 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 这样的框架内置了这类东西。我会认真考虑使用框架。
关于php - 在 PHP 中缓存辩论/论坛条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11861688/