gpt4 book ai didi

php - 使用可变项创建一个两次通过的 PHP 缓存系统

转载 作者:可可西里 更新时间:2023-11-01 13:38:21 25 4
gpt4 key购买 nike

我想实现一个二次缓存系统:

  • 第一步生成一个 PHP 文件,其中包含所有常见内容(例如新闻条目),并进行了硬编码。然后数据库有一个缓存表将这些与页面链接(例如“index.php page=1 style=default”),数据库还存储一个更新字段,如果为 false 则导致第一次通过在下一次页面时重新运行被查看。

  • 第二遍填写次要细节,例如某事(?)是多久以前的事,以及诸如“您登录为...”之类的可变项目。

但是我不确定是否有一个有效的实现,它支持缓存和非缓存(例如,搜索)页面,没有很多代码和几个查询。

现在每次加载页面时,都会运行 PHP 脚本重新生成页面。对于像搜索这样的页面,这很好,因为大多数搜索都是不同的,但对于其他页面(例如索引),每次点击实际上都是相同的,但会生成大量查询并且是一个相当长的脚本。

问题是页面的某些部分确实会根据每个用户进行更改,例如“您登录为...”部分,因此简单地保存生成的页面仍然会导致近 10,000 个相同的页面。

主要关注的是减少服务器的负载,因为我使用的是共享主机,目前无力升级,但该站点正在使用相当大一部分的服务器 CPU + 施加相当大的负载在 MySQL 服务器上。

因此,基本上可以最大限度地减少每个页面请求必须完成的工作量,并且不总是重新生成索引中的新闻条目之类的内容,这似乎是一个好的开始,相比之下,搜索是一个静态页面要少得多的页面。

我实际上考虑过将新闻项目硬编码为纯 HTML,但这意味着在多个地方维护它们(因为它们可能用于搜索并且评论位于专用于该新闻项目的页面上(即 news.php)等)。

最佳答案

我支持 Ken 对 PEAR 的推荐 Cache_Lite库,您可以使用它轻松缓存部分页面或整个页面。

如果您运行自己的服务器,我强烈推荐 memcached反而。它的速度要快得多,因为它完全在内存中运行,并且被许多高容量站点广泛使用。这是一个运行起来非常简单、稳定、无故障的守护进程。就您的 PHP 代码而言,您可以像 Cache_Lite 一样使用它来缓存各个页面部分或整页(或其他任意数据 block ),并且它非常易于使用,因为 PHP 有一个 memcache interface built in。 .

对于超大流量的整页缓存,看做VarnishSquid作为缓存反向代理服务器。 (由 Varnish 提供的页面将比任何访问 PHP 解释器的页面快 100 倍。)

请记住缓存,您实际上只需要缓存经常访问的内容。有时,当你真的不需要它时,开发一个非常复杂的缓存策略可能是一个陷阱。对于像您的主页这样每秒被点击几次的页面,您肯定希望对其进行优化以提高速度;对于一个小时可能有几次点击的页面,比如一个月前的博客文章,缓存它是个坏主意,你只会浪费你的时间,让事情变得更复杂,更容易出错。

关于php - 使用可变项创建一个两次通过的 PHP 缓存系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/156552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com