我正在运行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缓存。
我的规格:
答案 0 :(得分:1)
我不知道这个w3总缓存是如何工作的,但让我告诉你一些事实,
首先在nginx级别上,任何php页面都必须点击php引擎,因为这可能是你的try_files
告诉nginx做的,如果w3总缓存有某种html缓存的页面,然后,如果没有对nginx配置进行一些更改,即使缓存存在,您仍然会点击php。如果缓存不是真正的html形式,那么可能是php引擎检查页面是否存在然后决定是重建页面还是服务缓存的页面,所以你肯定需要运行php,不同的是它不会打到数据库,也不会进行任何处理,而是只提供缓存页面。
第二个问题,清漆,是清漆实际上是好的,它会省去你需要一个缓存插件,但是你需要确保wordpress知道什么时候要求清除清除缓存的页面,结构服务器将是user -> varnish -> nginx -> php
,如果varnish有一个缓存的页面或资产(css,js等),它将直接提供它而不将请求传递给nginx,我已在网站上尝试过它并且响应时间为缓存页面肯定有所改进,即使我做了ctrl+f5
请求整个页面没有缓存它仍然返回非常快,就好像页面只是一个普通的html页面。
你仍然需要弄乱清漆配置,或者至少这是我所做的,因为它需要一点点学习,但到目前为止,我所做的只是一些副本和粘贴博客和东西,它工作得很好与我一起。
答案 1 :(得分:1)
我在我的服务器前安装了Varnish,但同样,它正由PHP-FPM处理。
问题是网址末尾没有斜杠。
在Wordpress中,页面是一个目录,因此它以www.mysite.com/page1/
响应。
关键是当你点击www.mysite.com/page1
(没有斜线)时,Nginx必须重定向到www.mysite.com/page1/
(使用斜杠),并且通过这样做,它使用PHP-FPM。
将斜杠放在我网站中所有链接的末尾后,重定向没有完成,我的所有页面都没有被PHP-FPM处理。