为PHP站点实现缓存的最佳方法是什么?显然,有一些东西不应该被缓存(例如搜索查询),但我想找到一个好的解决方案,以确保我避免'挖掘效果'.
我知道有WordPress的WP-Cache,但我正在编写一个不是基于WP构建的自定义解决方案.我有兴趣编写自己的缓存(如果它足够简单),或者你可以指向一个漂亮,轻量级的框架.我不太了解Apache,所以如果它是一个PHP框架那么它会更合适.
谢谢.
您可以使用输出缓冲来有选择地保存输出的部分(您要缓存的部分),如果时间不够长,则将其显示给下一个用户.这样,您仍然可以即时呈现页面的其他部分(例如,可自定义的框,个人信息).
最好的方法是使用代理缓存(Squid,Varnish)并提供适当的Cache-Control/Expires标头以及ETag:请参阅Mark Nottingham的缓存教程,以获得有关缓存如何工作以及如何获得最多信息的完整描述高速缓存代理的性能.
还要检查memcached,并尝试在那里缓存数据库查询(或者更好的是,预渲染的页面片段).
如果代理缓存是不可能的,并且您正在提供完整的HTML文件,那么通过完全绕过PHP将获得最佳性能.研究WP Super Cache的工作原理.
未缓存的页面将复制到具有与您的站点类似的URL结构的缓存文件夹.在以后的请求中,mod_rewrite注意到缓存文件的存在并代替它.其他RewriteCond指令用于确保评论者/登录用户看到实时PHP请求,但大多数访问者将直接由Apache提供服务.