php - 在 PHP 中缓存辩论/论坛条目

标签 php mysql caching

只是寻求一条建议。在我们的一个网页上,我们有一个辩论/论坛网站。每次用户请求辩论页面时,他/她都会获得所有主题的列表(以及他们的答案数量等)。

当用户请求特定主题/主题时,该主题的所有答案都将显示给用户,其中包含用户名、用户图片、年龄、来自答案发布者的论坛帖子总数。

当前每次访问页面时都使用 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/

相关文章:

php - 检查图像是否为 JPEG

mysql - 删除重复行,没有唯一键 - 关系表

mysql - 当我在表中插入数据时调用未定义的函数

java - 二级缓存 + Spring Boot + Java Hibernate 中的问题

php - linkedin媒体上传api出错

php - 如何确保用户不会进入 PHP 中的特定页面?

php - 一次从多个表中删除行

mysql - 区分大小写的唯一性和不区分大小写的搜索

java - 使用JPA作为缓存机制?

php - 利用浏览器缓存在 PHP 项目的 htaccess 中不起作用