2015-05-21 23 views
1

我刚刚在php中更新了约Opcache,我对Codeigniter中基于文件的缓存并不熟悉。哪一个是更快的php基于文件的缓存或Opcache

但我认为截至目前基于文件的缓存更快的其他缓存技术,因为不会有任何数据库访问,它直接连接到生成的HTML文件加载。所以它应该比其他技术快。

所以我已经在谷歌搜索和一些websites compared通过基准测试他们提到的缓存的速度与其他缓存技术memcache和Opcache php相比,文件缓存检索速度较慢,我对报告感到困惑。

我知道每一种缓存技术都有各自的优点和缺点。建议我关于这种情况,以便我的页面不需要实时数据,而且目前我正在使用基于文件的缓存。所以去Opcache或Memache可以吗?

+0

PHP是一种解释型语言,不是一种编译语言,换句话说,当PHP尝试使用其中一个文件时,它首先读取它并将其转换(也称为编译)成类似于可以运行的机器代码。每次请求都会发生这种情况。 “opcache”所做的是将此机器代码存储在缓存中,以便PHP可以立即使用它而不是读取和解析PHP文件。对于复杂的网站,由此带来的速度提升可能非同寻常。 –

+0

如果您的渲染页面不需要实时/动态数据,那么从服务器的角度来看,文件/页面缓存就是您需要的。设置expires标题,以便客户端从客户端角度对其进行缓存。 – AbraCadaver

+0

@Kevin - 在一个主要方面错误 - PHP是__not__解释型语言;它是一种编译语言....但它是JIT(Just in Time)编译,这可能是什么让你感到困惑 –

回答

3

Opcache和Memcached将数据存储在内存中。在绝大多数情况下,从内存中检索数据比从文件系统中检索数据要快。缺点?运行Memcached并使用opcache显然会占用服务器的一些内存。

+0

所以你说Opcache的数据库结果也存储在内存中?并没有更多的时间数据库查询执行? – Raja

+1

@Yadheendran - OpCache纯粹存储脚本字节码,而不是任何类型的数据,因此数据库结果永远不会存储在OpCache中 –

0

OPcache通过将预编译的脚本字节码存储在共享内存中来提高PHP性能,从而消除了在每个请求中加载和分析脚本的需求。
基于文件的缓存您正在讨论的是关于将变量缓存到文件并在以后使用。 (经常在获取数据的时间很慢时使用)
因此,仍然可以使用基于文件的缓存来存储变量并使用Opcache来缓存脚本。但是,将数据缓存到内存会更快。在这种情况下,请尝试使用Memcached/Redis或任何可以找到的东西。

相关问题