众所周知Redis具有轻量级,持久化,高速存取等优点,具有跨平台的特性.而这里我们做的就是使用SRcache将PHP内容直接缓存到Redis里减轻后端服务器的压力,提高后端响应速度. SRcache模块为缓存提供了一个整合后端存储的能力,可以配合Redis使用.如果Redis访问没命中,则发起一个后端请求,获取到数据之后自动缓存到Redis,下次访问将直接调用Redis中的缓存. OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,由中国人章亦春发起,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关. WordPress没优化前当用户访问页面的时候需要经过PHP,数据库等.而当使用了SRcache以后,用户的访问请求则是直接访问了缓存,大大的加快了响应时间. 安装好环境后,将下面的规则添加到主机的配置文件.这里环境的安装我选择了linuxeye一键包.可以直接一键安装好所需要环境. 在Http段添加下面这段代码: upstream redis { server 127.0.0.1:6379; keepalive 512; } Server段: set $skip_cache 0; #POST请求直接调用后端 if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } #不要缓存以下部分 if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } #不缓存登陆用户和最近评论的用户 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } location /redis-fetch { internal ; set $redis_key $args; redis_pass redis; } location /redis-store { internal ; set_unescape_uri $key $arg_key ; redis2_queryset $key $echo_request_body; redis2_queryexpire $key 14400; redis2_pass redis; } location ~ .*\.(php|php5)?$ { set $key "nginx-cache:$scheme$request_method$host$request_uri"; try_files $uri =404; srcache_fetch_skip $skip_cache; srcache_store_skip $skip_cache; srcache_response_cache_controloff; set_escape_uri $escaped_key $key; srcache_fetchGET /redis-fetch $key; srcache_storePUT /redis-storekey=$escaped_key; more_set_headers 'X-Cache $srcache_fetch_status'; more_set_headers 'X-Store $srcache_store_status'; #下面这些不用添加 #fastcgi_pass remote_php_ip:9000; fastcgi_passunix:/dev/shm/php-cgi.sock; fastcgi_indexindex.php; includefastcgi.conf; } 重启OpenResty即可生效,但是还有一个缺点就是当我们发布新文章,修改文章,通过评论,修改评论时无法自动更新缓存. WordPress插件Nginx Helper可以当我们发布新文章,修改文章,通过评论,修改评论自动清理缓存.可以通过在Wordpress后台安装这个插件,直接搜索Nginx Helper即可. (责任编辑:好模板) |