php Apc缓存或文件缓存的半静态网站


php Apc caching or File caching for semi-static website?

我是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是否通过虚拟主机隔离缓存。即使有,我也不会认为我的网站是一个真正独立的虚拟主机。