我想实现一个两遍缓存系统:
第一遍生成一个 PHP 文件,其中包含硬编码的所有常见内容(例如新闻项目)。然后数据库有一个缓存表来链接这些页面(例如“index.php page=1 style=default”),数据库还存储一个uptodate字段,如果为false,则导致第一次通过在下一次页面重新运行被查看。
第二遍填写次要细节,例如某件事(?)是多久以前,以及诸如“您以...登录”之类的可变项目。
但是我不确定一个有效的实现,它支持缓存和非缓存(例如,搜索)页面,没有很多代码和几个查询。
现在每次加载页面时,PHP 脚本都会运行重新生成页面。对于像搜索这样的页面,这很好,因为大多数搜索是不同的,但对于其他页面,例如索引,每次点击几乎相同,但会生成大量查询并且是相当长的脚本。
问题是页面的某些部分确实会根据每个用户进行更改,例如“您以...登录”部分,因此仅保存生成的页面仍会导致 10,000 个几乎相同的页面。
主要关注的是减少服务器上的负载,因为我在共享主机上,此时无法升级,但该站点正在使用服务器的相当大一部分 CPU + 对 MySQL 施加了相当大的负载服务器。
因此,基本上最大限度地减少每个页面请求必须完成的工作量,而不是一直在索引上重新生成诸如新闻项目之类的东西似乎是一个好的开始,相比之下,搜索是一个静态页面少得多的页面。
我实际上考虑将新闻项目硬编码为纯 HTML,但这意味着在多个地方维护它们(因为它们可能用于搜索并且评论位于专用于该新闻项目的页面上(即 news.php)等) .