通过PHP缓存页面

通过PHP缓存页面,php,performance,caching,dynamic,server-side,Php,Performance,Caching,Dynamic,Server Side,我有一个网站,有三个页面,分别是x、y和z,其中包含了大量的内容,这些内容是动态构建的,包含多个数据库查询和许多计算功能。但是,页面x、y和z的内容在不同的用户中是相同的。我的问题是,我怎样才能最好地缓存它?到目前为止,我所尝试的: 如果缓存文件不存在,请获取函数build\u the\u content(),该函数用于生成相关页面的HTML页面内容(作为返回的串联HTML字符串),并使用file\u put\u contents()将该字符串写入相应的缓存文件。然后在加载页面时,我会执行以下操

我有一个网站,有三个页面,分别是x、y和z,其中包含了大量的内容,这些内容是动态构建的,包含多个数据库查询和许多计算功能。但是,页面x、y和z的内容在不同的用户中是相同的。我的问题是,我怎样才能最好地缓存它?到目前为止,我所尝试的:

如果缓存文件不存在,请获取函数
build\u the\u content()
,该函数用于生成相关页面的HTML页面内容(作为返回的串联HTML字符串),并使用
file\u put\u contents()
将该字符串写入相应的缓存文件。然后在加载页面时,我会执行以下操作:

if ( file_exists( path_to_cache_file ) ) {

  readfile( path_to_cache_file ); 

} else {

  echo build_the_content();

}
我想知道这是最好的方法,还是有更好的做法


同样重要的是如何创建缓存文件:我在后端编程了几个管理页面,用于编辑页面x、y和z的不同部分。当客户端更新页面x和y的一部分时,我想自动更新页面x和y的缓存文件。为了能够做到这一点,我需要在所有地区更新受影响的页面,正如
build\u the_content()
使用的那样。我是否可以在服务器端调用PHP中的某个页面,仅针对特定的语言环境执行此操作?

FWIW,缓存通常最好降级到Web服务器和/或CDN级别。您不需要显式地将代码写入文件等,从而使代码更加复杂;您只需要设置正确的HTTP头,告诉面向客户端的HTTP端点它们可以在一定时间内缓存内容。如果你使用CDN,这在所有可能的方面都会更加有效,因为PHP甚至不参与缓存页面的服务。这就是问题所在,理论上我可以缓存100%的正文,没有任何时间限制,只有在后台管理中更新部分内容时才会更改。这就是为什么我认为在管理编辑时使用PHP缓存是最好的方法。对于这个用例,你不同意吗?这是一个成本效益权衡。生成该页面是否非常昂贵?然后,您可能希望在PHP中缓存这一昂贵的数据生成,因此即使调用PHP,它也可以快速完成其工作。但是,如果生成此页面的成本不太高,那么无论是否调用PHP,都应该无关紧要。因此,在这种情况下,HTTP缓存很好,它可以轻松实现95%以上的缓存命中率。唯一的另一个问题是缓存失效,以及您需要更新以多快的速度传播给访问者。HTTP缓存在即时传播方面不好。那么这实际上是一个WordPress站点吗?如果是这样的话,也许首先开始研究瞬变。谢谢@deceze,是的,这就是为什么我认为PHP可能是更好的方法,但是谢谢你的信息朋友,我不知道这些事情!