我是PHP新手,想尝试缓存(第一次),所以我制作网站,它有:
- 动态主页
- 动态投资组合页面
- 动态联系人页面
- 静态关于页面
- 静态管理页面
所以我阅读了关于缓存的教程,并尝试创建自己的缓存系统:
使用文件缓存基于什么页面被请求,当页面被请求缓存系统将检查是否有缓存在cache directory
,如果没有缓存文件,然后写所有的输出(html)从php脚本(在这种情况下,从output buffer
输出),如果有缓存文件对应于特定的id(基于URI),然后只是include_once()
的html文件。
然后我在CodeIgniter中阅读(我使用CI制作这个网站)说有APC用于缓存,然后我再次阅读APC,我读到的APC是它缓存了DB结果,但现在我很困惑我应该使用
我得到了什么:
- 如果有很多请求,文件缓存可能会变慢(我不知道这是真的还是假的,但我从搜索引擎的某个地方读到它)
- APC速度快
但是我仍然不知道我应该用哪个,我是共享主机
PHP应用程序中最相关的缓存级别:
-
文件/脚本缓存 -操作系统实际上会在很大程度上执行此操作。当文件被打开时,它被添加到操作系统级缓存中。它一直在那里,直到文件被触摸或操作系统需要为其他进程释放内存。
-
操作码缓存 -为了运行,PHP需要解析并编译一个脚本为操作码。像APC这样的机制将缓存Apache执行的每个PHP脚本的操作码,前提是缓存不会溢出。一个建立在APC之上的本地PHP解决方案可以部分地做到这一点,但是APC已经做到了…
-
查询缓存—如果您的脚本访问大量不经常更改的数据,或者更新之间的一些延迟和这些更新的可见性是可以接受的,那么缓存来自复杂的查询的结果是有益的。在这个级别上,基于APC构建的自定义PHP解决方案是可以接受且有益的。但是数据库级的解决方案在这里也是合适的,而且通常更适合。
-
输出缓存—如果您的页面在很大程度上是确定性的,并且/或者与查询缓存相同类型的延迟是可以接受的,您可以使用输出缓冲和APC缓存脚本的整个输出。在这里,基于APC构建的本地PHP解决方案是可以接受的,但通常不是必需的。如果页面是静态的,您可能不会为自己节省任何重新计算。如果它是动态的,通常最好是重新渲染页面。
在专用或虚拟专用环境中,您需要自己安装APC(或类似的东西)。但是,在共享主机环境中,很可能安装了APC。如果不是,你也不能自己安装。
而且,由于我自己的不确定性,我建议不在共享环境中使用APC执行任何查询或输出缓存-我不确定APC是否通过虚拟主机隔离缓存。即使有,我也不会认为我的网站是一个真正独立的虚拟主机。