替代PHP缓存需要澄清

时间:2012-01-04 04:09:04

标签: php caching apc

我正在玩 Alternative PHP Cache APC,我无法找到一些问题的答案。

  1. 如果文件已经通过 apc_compile_file()自动或隐式地加载到字节码缓存中,那么php函数包括是否意识到这一点?是否包括使用缓存,何时需要文件而不是从光盘访问文件?
  2. 如果是这样,我怎么测试,看看它是否有效?那些告诉我光盘上的文件没有被访问的东西就足够了。
  3. 自动加载到APC系统缓存中的一些文件只是纯html文件,或99%html,带有一些php变量(模板文件)。它们在APC缓存中占用的空间不多,但是,有没有办法排除文件或整个文件夹?告诉APC不要考虑加载它们吗?
  4. 我一直使用SQLite或Redis数据库作为会话保存处理程序后端,具体取决于项目。在同一个项目中使用APC和Redis通常会有意义。您如何看待在APC中保存会话数据?
  5. 谢谢,

2 个答案:

答案 0 :(得分:2)

对于1和2我没有证据,但我相信对包含的文件也进行了缓存。否则它就没有意义了。有大量应用程序,单个入口点和其他文件包含在不同级别。难道你不认为所有这些应用都不能使用APC吗?

对于纯html文件,我建议您使用readfile()而不是include(),因此根本不涉及缓存。

对于包含一些php变量(模板文件)的文件,你必须将它们保存在缓存中,因为整个缓存点都是跳过解析部分。否则你会让PHP一直解析这些文件,我相信这不是你的愿望。

您可以使用APC存储会话。我不知道是不是更好。试试看哪个更适合你。我相信没有严格的标准。

答案 1 :(得分:1)

  1. 在从内存中检索文件的操作码之前,取决于apc.stat指令,php将检查文件是否已被修改(仅请求stat,没有内容读取)
  2. 您可以将apc.stat设为0。包含一些文件,删除它,不会发生任何事情。该脚本应该在文件尚未删除时起作用
  3. 是的,请使用apc.filters
  4. 可能它会快一点,但APC只是一个缓存,所以它不能保证数据在任何特定时刻都会存在