php加速模块cpan模块,Nginx下使用memcached模块加速PHP应用程序

Memcached,就不多说了,地球人都知道.

Nginx有一个memcached_module,可以直接从后端的memached服务器中读取内容,

直接输出.

通过这个模块,可以极大的提升动态页面的访问速度.

我的实践中, 曾经用这个模块快速的解决了由于代码造成的一些瓶颈问题.

memcached可以通过upstream来从多台memcached服务器中读取,也可以支持热备份.

下面是我的完整例子

upstream memcached {

server 192.168.8.11:11211;

server 192.168.8.10:11211;

}

server {

listen 80;

server_name t.night9.cn;

limit_conn one 10;

charset utf-8;

access_log /logs/web/t.log main;

root /www/app/web;

default_type text/html;

index app;

location = / {

set $memcached_key $host$uri;

default_type text/html;

memcached_pass memcached;

error_page 404 = /missing;

}

location /missing {

internal;

rewrite ^/missing$ /app/site/blog last;

}

include php_app.conf;

}

upstream memcached {

server 192.168.8.11:11211;

server 192.168.8.10:11211;

}

server {

listen 80;

server_name t.night9.cn;

limit_conn one 10;

charset utf-8;

access_log /logs/web/t.log main;

root /www/app/web;

default_type text/html;

index app;

location = / {

set $memcached_key $host$uri;

default_type text/html;

memcached_pass memcached;

error_page 404 = /missing;

}

location /missing {

internal;

rewrite ^/missing$ /app/site/blog last;

}

include php_app.conf;

}

在这个例子中, nginx首先从memcached中读取(缓存的key可以用memcached_key来设置.),

如果命中,则直接输出内容,注意,需要设置default_type ,否则可能不能正常显示.

如果没有命中,memcached_module会返回404,因此可以用 error_page 404来转发到后端的应用程序,

本例中是先转发到/missing ,而/missing则重写到实际的后端应用地址中.

Nginx只负责从memcached中读取内容,但不负责设置.因此,需要你的应用程序自行将相应的页面缓存

设置到memcached中.

在我的部署中, 我是通过设置一个PAGE_CACHE_ID给php的fastcgi:

(在fastcgi_params中加入):

fastcgi_param PAGE_CACHE_ID $memcached_key;

php程序一旦检测到这个环境变量,

那么会自动将当前页面的内容设置到memcached缓存中,由于是在php框架中自动作的,所以可以随时切换,不需要修改.

缺点:

很多事情都不是那么完美, 对于nginx的这个module,其最大的问题就是不支持压缩,

因此,在使用php的memcache函数设置缓存时,必须取消压缩,否则将无法正确输出.

这样带来的一个小问题就是:

由于一般页面至少数k以上,这样对于内存的消耗是比较大.

因此, 在这个module支持压缩之前, 可以考虑备选方案:

使用独立的FASTCGI服务器来替换memcache模块.

通过CPAN模块,实现起来非常简单!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值