memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存

bwha7370 8年前

来自: http://blog.csdn.net//jiao_fuyou/article/details/36630537


在上一节《nginx+memcached构建页面缓存应用http://www.ttlsa.com/html/2418.html中,说道nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成。使用memc-nginx和srcache-nginx模块就可以主动的向memcached添加缓存,对应用程序来说是透明的。大大的提高动态页面访问速度。第一次访问创建缓存,后续访问在缓存过期时间内,直接从memcached返回,不需要再次经过php-fpm处理。

nginx_memc模块与nginx_srcache模块配合使用,来提供缓存服务器后端的操作,在技术上,任何提供REST接口的模块都可以与nginx_srcache配合使用来获取和存储缓存子请求。

使用memcached作为后端缓存,需要注意memcached存储大小的限制,不得超过1M。为了使用更宽松的后端存储服务,建议使用redis等,参见《srcache_nginx+redis构建缓存系统》。

1. memc-nginx-module模块指令说明:
memc_pass
语法:memc_pass address:port or socket;
默认值:none
配置段:http, server, location, if
指定memcached服务器地址。

memc_cmds_allowed
语法:memc_cmds_allowed <cmd>…
默认值: none
配置段:http, server, location, if
列出允许访问的memcached命令。默认情况下,所有的memcached命令都可以访问。

memc_flags_to_last_modified
语法:memc_flags_to_last_modified on|off
默认值:off
配置段:http, server, location, if
读取memcached标识,并将其设置为Last-Modified头部值。对于有条件的get,nginx返回304未修改响应,以便节省带宽。

memc_connect_timeout
语法:memc_connect_timeout <time>
默认值:60s
配置段: http, server, location
与memcached服务器建立连接的超时时间。不得超过597 hours。

memc_send_timeout
语法:memc_send_timeout <time>
默认值:60s
配置段:http, server, location
设置发送请求到memcached服务器的超时时间。不得超过597 hours。

memc_read_timeout
语法:memc_read_timeout <time>
默认值:60s
配置段:http, server, location
定义从memcached服务器读取响应超时时间。不得超过597 hours。

memc_buffer_size
语法:memc_buffer_size <size>
默认值:4k/8k
配置段:http, server, location
读取从memcached服务器接收到响应的缓冲大小。

2. memcached支持的命令
memcached存储命令set、add、replace、prepend、append,以$memc_key作为键。$memc_exptime定义过期时间,默认值为0。$memc_flags作为标识,默认值为0,来建立相应的memcached查询。
如果$memc_value没有定义,那么请求的请求体将作为该值,除了incr和decr命令外。注意:如果$memc_value定义为空的字符串,那么该空字符串仍然被当做该值。
2.1 get $memc_key
使用键来检索值。

location /foo {  set $memc_cmd 'get';  set