0

我是 PHP 新手,想尝试缓存(第一次),所以我制作了网站,它有:

  • 动态主页
  • 动态投资组合页面
  • 动态联系页面
  • 关于页面的静态
  • 静态管理页面

所以我阅读了关于缓存的教程,并尝试制作自己的缓存系统:

根据请求的页面使用文件缓存,当请求页面时,缓存系统将检查是否有缓存,cache directory如果还没有缓存文件,然后从 php 脚本写入所有输出(html)(在这种情况下,输出来自output buffer)如果有与特定 id 对应的缓存文件(基于 URI),那么只有include_once()html 文件。

然后我在 CodeIgniter 中读到(我使用 CI 制作这个网站)说有 APC 用于缓存,然后我再次读到 APC,我读到的关于 APC 的内容是它缓存了数据库结果,但现在我很困惑我应该使用哪个

到目前为止我得到了什么:

  • 如果有很多请求,文件缓存可能会变慢(我不知道这是不是真的,但我从搜索引擎的某个地方读到它)
  • APC 速度很快

但我仍然很困惑我应该使用哪个,我在共享主机上

4

1 回答 1

1

PHP 应用程序中最相关的缓存级别:

  • 文件/脚本缓存——操作系统实际上会在很大程度上做到这一点。打开文件时,它会被添加到操作系统级别的缓存中。它会一直留在那里,直到文件被触摸或操作系统需要为其他进程释放内存。一个本土的 PHP 解决方案并不是一个很好的替代品。

  • 操作码缓存- 为了发挥作用,PHP 需要将脚本解析并编译成操作码。像 APC 这样的机制将缓存 Apache 执行的每个 PHP 脚本的操作码,前提是缓存不会溢出。在 APC 之上构建的本土 PHP 解决方案可以部分做到这一点,但 APC 已经做到了……所以不要打扰。

  • 查询缓存- 如果您的脚本访问大量不经常更改的数据,或者更新之间的一些延迟和这些更新的可见性是可以接受的,那么缓存来自复杂查询的结果是有益的。在 APC 上构建的本土 PHP 解决方案在此级别上是可以接受和有益的。但是数据库级别的解决方案在这里也很合适,而且通常合适。

  • 输出缓存- 如果您的页面在很大程度上是确定性的和/或适用于查询缓存的相同类型的延迟是可以接受的,您可以使用输出缓冲和 APC 缓存脚本的整个输出。在 APC 上构建的本地 PHP 解决方案在这里是可以接受的,但通常不是必需的。如果页面是静态的,您可能不会为自己节省任何重新计算。如果它是动态的,通常最好还是重新渲染页面。

在专用或虚拟专用环境中,您需要自己安装 APC(或类似的东西)。但是,在共享主机环境中,很可能安装了 APC。如果不是,您无论如何都无法自己安装它。

而且,由于我自己的不确定性,我建议不要在共享环境中使用 APC 执行任何查询或输出缓存——我不确定 APC 是否按虚拟主机隔离缓存。即使是这样,我也不会认为我的网站真的是一个单独的虚拟主机。

于 2013-05-24T15:24:35.613 回答