0

我正在运行 Wordpress:Nginx + PHP-FPM + APC + W3 Total Cache + PageSpeed。经过3天的研究和配置,我成功配置了。

运行“top”并点击一些缓存页面,它显示:

PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13387 nginx     20   0  472m  11m 4664 S 12.3  2.0   0:46.55 nginx
17577 nginx     20   0  443m  47m  29m S  0.7  8.0   0:42.88 php-fpm
17591 nginx     20   0  438m  43m  29m S  0.7  7.2   0:42.59 php-fpm
1486  mysql     20   0  851m  21m 4832 S  0.3  3.7   1:24.71 mysqld
17907 nginx     20   0  438m  48m  34m S  0.3  8.1   0:36.78 php-fpm
18065 nginx     20   0  442m  47m  29m S  0.3  8.0   0:33.49 php-fpm
18543 nginx     20   0  445m  63m  42m S  0.3 10.6   0:22.94 php-fpm
21125 root      20   0 15012 1148  868 R  0.3  0.2   0:00.86 top
1     root      20   0 19356 1388 1136 S  0.0  0.2   0:00.74 init

1) 为什么每个请求都由 PHP-PFM 处理?W3 Total Cache 不应该阻止 PHP-FPM 处理请求吗?

我知道我的页面正在被缓存,因为每个页面都以 HTML 结尾返回:

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/
Page Caching using disk: enhanced

2)如果我在Nginx前面安装Varnish,它会阻止PHP-FPM处理请求吗?(性能会提高吗?我使用的是 Micro Ec2,Ram = 613MB)

PS:响应头从服务器返回“Cache-Control: max-age=0, no-cache”。我不知道这是否会影响 W3 缓存。

我的规格:

  • 亚马逊微型 EC2
  • Linux 版本 3.4.48-45.46.amzn1.x86_64 Red Hat 4.6.3-2(我认为是基于CentOS 5)
  • PHP 5.3.26 (fpm-fcgi)
4

2 回答 2

1

我不知道这个 w3 总缓存是如何工作的,但让我告诉你一些事实,

首先在 nginx 级别,任何 php 页面都必须命中 php 引擎,因为这可能是您try_files告诉 nginx 要做的事情,如果 w3 总缓存有某种页面的 html 缓存,那么您无需对 nginx 配置进行一些更改即使缓存存在,仍然会命中 php。如果缓存不是真正的 html 形式,那么 php 引擎可能会检查页面是否存在,然后决定是重建页面还是提供缓存的页面,所以你肯定需要 php 来运行,区别在于它不会访问数据库,也不会进行任何处理,而是提供缓存页面。

第二个问题,清漆,是的,清漆实际上很好,它可以让你不需要缓存插件,但是你需要确保 wordpress 知道什么时候让清漆清除缓存的页面,服务器的结构是user -> varnish -> nginx -> php,如果清漆有一个缓存页面或资产(css,js等)它会直接提供它而不将请求传递给nginx,我已经在网站上尝试过它并且缓存页面的响应时间肯定有所改善,即使我做了一个ctrl+f5请求整个页面没有缓存它仍然返回非常快,好像页面只是一个普通的 html 页面。
你仍然需要弄乱清漆配置,或者至少我就是这样做的,因为它需要一点学习,但到目前为止,我所做的只是从博客和其他东西中复制和粘贴,它工作得很好与我一起。

于 2013-07-10T20:11:27.183 回答
1

我在我的服务器前面安装了 Varnish,但它再次被 PHP-FPM 处理。

问题是 URL 末尾缺少斜杠。

在 Wordpress 中,页面是一个目录,因此它的响应为www.mysite.com/page1/.

关键是当你点击www.mysite.com/page1(不带斜线)时,Nginx 必须重定向到www.mysite.com/page1/(带斜线),通过这样做,它使用 PHP-FPM。

将斜线放在我网站中所有链接的末尾后,重定向没有完成,我的所有页面都没有被 PHP-FPM 处理。

于 2013-07-12T14:07:16.180 回答