我们有运行nginx 7.65和fastcgi PHP5的web服务器,并正在研究caching的可能性,以加快内容交付和降低系统负载。 服务器运行不同的(自定义)应用程序。
有这么多的caching选项我不知道什么是一个理智的设置。 有memcached,APC,Nginx的fastcgi_cache,proxy_cache ….
我知道memcached具有分发能力作为奖励,但我们现在不需要它。 根据我的经验,如果memcached安装在与服务器相同的机器上,其执行速度会比APC慢,但这是前一段时间。
我不熟悉Nginx的fastcgi_cache甚至是常规的proxy_cache模块。 它可比较还是完全不同?
对于Nginx w来说,一个好的,理智的caching方法是什么。 FastCGI PHP5?
http://php-fpm.org/是我们在最近几次安装中使用的,而不是FastCGI本身。
Nginx可以直接从memcached提供页面,所以,你的应用程序可以直接将页面写入memcached。 否则,您需要确保您的代码使用memcached查询/对象。 操作码caching将有助于取决于您的代码库。 如果您有一小部分重复运行的脚本,则APC或XCache(或某些情况下的eaccelerator)可以提供很好的提升。
您的caching方法取决于您的代码。 你能caching页面吗? 片段? sql结果? 值? 这些实体的寿命是多less?他们需要多less空间?关键和结果集有多大? 至于memcached比APC慢,因为他们不是真的执行相同的任务,我不知道你比较什么。
如果你的盒子可以自己处理整个caching,那么memcache只会减慢你的速度。 APC是共享内存。 使用它会吹走memcached。 Nginx的快速CGIcaching将使所有dynamic的PHP页面尖叫。 即使将caching设置为10秒,也会使得每个给定的PHP页面的最大命中率为每10秒一次。 使得加载时无法使页面崩溃。 我在一个小盒子上运行了一大堆网站,每个月都有数百万人。 所有你需要的是nginxcaching和APC在这一点上。
只有当您必须将caching扩展到一个盒子以外时,Memcache才会进入图片。
恕我直言,我们系统pipe理员往往把注意力集中在这个问题上,从后端开始,因为那就是我们的地盘。 最有效的东西确实在前端。 如果你可以得到浏览器caching(http头)和httpcaching(cdn,头再次)部分权利,你可以在原点做令人惊讶的马虎事件,并罚款。
现在,您可以用HHVMreplacePHP-FPM,它将结合PHP-FPM + APC的性能,并为您提供惊人的速度:hhvm + nginx + fastcgi_cache