来源:未知 时间:2015-11-04 10:46 作者:xxadmin 阅读:次
[导读] nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。nginx只负责从memcached服务器中读取...
|
nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成,主动的将要缓存的页面缓存到memcached中,可以通过404重定向到后端去处理的。 结构图如下:
memcached的key可以通过memcached_key变量来设置,如以$uri。如果命中,那么直接输出内容,没有命中就意味着nginx需要从应用程序请求页面。同时,我们还希望该应用程序将键值对写入到memcached,以便下一个请求可以直接从memcached获取。 1. 模块指令说明: memcached_buffer_size memcached_connect_timeout memcached_gzip_flag memcached_next_upstream memcached_pass memcached_read_timeout memcached_send_timeout $memcached_key变量: 2. nginx memcached的增强版ngx_http_enhanced_memcached_module 3. 应用实例 upstream memcacheds {
server 10.1.240.166:22222;
}
server {
listen 8080;
server_name nm.ttlsa.com;
index index.html index.htm index.php;
root /data/wwwroot/test.ttlsa.com/webroot;
location /images/ {
set $memcached_key $request_uri;
add_header X-mem-key $memcached_key;
memcached_pass memcacheds;
default_type text/html;
error_page 404 502 504 = @app;
}
location @app {
rewrite ^/.* /nm_ttlsa.php?key=$request_uri;
}
location ~ .*\.php?$
{
include fastcgi_params;
fastcgi_pass 127.0.0.1:10081;
fastcgi_index index.php;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}nm_ttlsa.php实例: <?php
$fn = dirname(__FILE__) . $_SERVER['REQUEST_URI'];
if(file_exists($fn)) {
$data = file_get_contents($fn);
$m = new Memcached();
$servers = array(
array('10.1.240.166', 22222)
);
$m->addServers($servers);
$r=$m->set($_GET['key'],$data);
header('Content-Length: '.filesize($fn)."\r\n");
header('Content-Type: image/gif'."\r\n");
header('X-cache: MISS'."\r\n");
print $data;
}else{
header('Location: http://www.ttlsa.com'."\r\n");
}4. 测试
再次访问:(直接从memcached读取)
哈,这个实例并不好。 nginx的memc-nginx和srcache-nginx模块可以主动的向memcached添加缓存。后续整理后再发布出来。参见《memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存》http://www.ttlsa.com/html/2460.html 如需转载请注明出处: http://www.ttlsa.com/html/2418.html |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com