在 php 5.5 中用什么来代替 apc 用户数据缓存?

2022-08-30 15:42:42

PHP 5.5 默认包含 zend opcache,这基本上意味着几乎没有人会使用 APC。

但是,除了APC的用户数据缓存部分(apc_store&apc_fetch和类似)之外,使用什么呢?

我真正喜欢使用APC用户数据缓存的一个用例是静态资产(javascript,css..)的“版本”。每当我引用静态文件时,我都会将其内容的哈希添加到url中(例如<script src=/script.js>将变为<script src=/script.js?v=hash>),以便浏览器始终使用当前版本并可以永久缓存它。

我可以想象使用redis或memcache来存储静态文件的哈希值,但是通过网络或套接字询问另一个进程只是为了获取文件内容的哈希值似乎是愚蠢的。APC用户数据缓存(位于共享内存中,访问它几乎与访问php变量一样快)似乎只是用于此类数据的正确方法。

所以问题是:在php 5.5中使用什么来缓存小位数据而不是APC?


答案 1

从 PHP 5.5 开始,APC 用户数据存储单独打包为 PECL APCu

这允许您使用所有用户缓存函数,例如 apc_store()。它也将返回 - 这意味着所有依赖于APC的库都将与PHP 5.4类似。trueextension_loaded('apc')


答案 2

我最近在从php 5.3升级到php 5.5 beta 2后处理了这个问题。

我看了看Memcache和Redis。根据你问的是谁,两者之间的表现大致相同。有些人声称Redis稍微快一点。但是,Redis比Memcahe具有更多的功能,所以我决定使用Redis。

对于PHP客户端,我选择了Phpredis而不是Predis。Phpredis是一个C扩展,而Predis是一个纯PHP实现。因此,Phpredis通常更快。

我主要使用Redis来缓存和检索序列化对象。我开始了我目前正在用PHP 5.3和APC开发的项目。我继续用php 5.5和Redis开发这个项目。虽然我没有基准统计数据,但我可以告诉你,该应用程序“感觉”更快。这可能是由于 php 5.5 中的性能增强,而不是 APC 用户缓存与 Redis。无论哪种方式,我都对自己的选择感到满意。

我希望这有帮助。祝你好运,快乐黑客:-)


推荐