Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219774
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 20:28
文章分类
文章存档

2014年(73)

分类: 服务器与存储

2014-11-21 14:54:00

原文地址:nginx的内置缓存功能 作者:shenyanxxxy

nginx的proxy模块 可以实现类似于Squid的缓存功能,HTTP的缓存与文件系统或者块设备的缓存还有所不同,文件系统或者块设备的缓存可以使用预取方法做优化,提前预取出将要被访问的部分,但是HTTP的缓存却无法预知文件的访问情形。

可以在nginx里面实现动态页面的静态化工作。用户第一次访问index.php页面,由于nginx的缓存中没有,会访问相应的文件,第二次再访问index.php的时候,由于已经缓存在了nginx的proxy_cache中,Nginx当接收到请求之后就不会将请求传送到upstream服务器里面了。

具体的配置方法如下:
在http域内添加如下参数

点击(此处)折叠或打开

  1. proxy_temp_path /usr/local/nginx/sy;
  2. proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=cache_zone:20m inactive=1d max_size=100m;
在location里面使用proxy_cache,
配置方法如下:

点击(此处)折叠或打开

  1. location ~* \.php$ {
  2. proxy_cache cache_zone;
  3. proxy_cache_key $host$uri$is_args$args;
  4. proxy_cache_valid any 1d;
  5. proxy_pass
  6. }

这里面设置proxy_cache_key挺有意思的,他会根据这个key映射成一个hash值,然后存入到本地文件中,如果你设置的proxy_cache_key为$host$uri 那么无论后面跟的什么参数,都会访问一个文件,不会再生成新的文件。
而如果proxy_cache_key设置了$is_args$args,那么传入的参数 localhost/index.php?a=4 与localhost/index.php?a=44将映射成两个不同hash值的文件。
在系统中查看相应的文件:

阅读(1177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~