先看下测试数据: 未使用 Concurrency Level: 5 Time taken for tests: 9.016 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1696500 bytes HTML transferred: 1669000 bytes Requests per second: 11.09 [#/sec] (mean) Time per request: 450.781 [ms] (mean) Time per request: 90.156 [ms] (mean, across all concurrent requests) Transfer rate: 183.76 [Kbytes/sec] received 日志里显示,页面执行需要0.004s Concurrency Level: 5 Time taken for tests: 3.203 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1685400 bytes HTML transferred: 1669000 bytes Requests per second: 31.22 [#/sec] (mean) Time per request: 160.156 [ms] (mean) Time per request: 32.031 [ms] (mean, across all concurrent requests) Transfer rate: 513.84 [Kbytes/sec] received 日志里显示,页面执行时间为0s 提高的很明显!
http里:
fastcgi_cache_path /www/php_cache levels=1:2 keys_zone=cache_php:30m inactive=1d max_size=10g;
server里: fastcgi_cache_path:fastcgi_cache 缓存目录,可以设置目录层级,比如1:2会生成16*256个字目录,cache_php是这个缓存空间的名字,cache是用多少内存(这样热门的内容 nginx直接放内存,提高访问速度),inactive表示默认失效时间,max_size表示最多用多少硬盘空间。本来还有个 fastcgi_temp_path参数,但发现似乎没用。 fastcgi_cache_valid:定义哪些http头要缓存 fastcgi_cache_min_uses:URL经过多少次请求将被缓存 fastcgi_cache_use_stale:定义哪些情况下用过期缓存 fastcgi_cache_key:定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录 fastcgi_cache:用哪个缓存空间 指定删除某一URL的php文件的缓存的PHP程序 大致代码如下:
参考网站地址:http://www.fuchaoqun.com/2011/01/nginx-fastcgi_cache/
Nginx fastcgi_cache缓存很不错,但我只想在某些页面用fastcgi_cache,很简单,有两种方法,一是在location中定义 fastcgi_cache,这样只有满足一定规则的url才会用上cache,其他的就不会了;另外一种方法是在你不需要缓存的页面上,输出禁止缓存的 头信息,用ColaPHP的话,直接$this->response->disableBrowserCache(); 具体代码: 这样就告诉Nginx,这个页面不需要缓存。 好吧,要淡定不要D疼,还有最后一个问题,如果页面中只有一小部分内容不可以缓存,可以用Nginx fastcgi_cache吗?比如某个内容页,大部分内容可以缓存,但希望把用户的登录信息更新上去。答案是肯定的,可以直接输出用户未登录的页面样 式,等页面加载完毕之后,通过ajax异步更新用户信息: 码完收工。 (责任编辑:IT) |