nginx之缓存补充
来源:互联网 发布:唐缺 知乎 编辑:程序博客网 时间:2024/05/23 01:15
陈旧总比没有强
Nginx 内容缓存的一个非常强大的特性是:当无法从原始服务器获取最新的内容时,Nginx 可以分发缓存中的陈旧(stale,编者注:即过期内容)内容。这种情况一般发生在关联缓存内容的原始服务器宕机或者繁忙时。比起对客户端传达错误信息,Nginx 可发送在其内存中的陈旧的文件。Nginx 的这种代理方式,为服务器提供额外级别的容错能力,并确保了在服务器故障或流量峰值的情况下的正常运行。为了开启该功能,只需要添加proxy_cache_use_stale 命令即可:
location / { ... proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;}
按照上面例子中的配置,当 Nginx 收到服务器返回的 error,timeout 或者其他指定的 5xx 错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。
缓存微调
Nginx 提供了丰富的可选项配置用于缓存性能的微调。下面是使用了几个配置的例子:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60muse_temp_path=off;server { ... location / { proxy_cache my_cache; proxy_cache_revalidate on; proxy_cache_min_uses 3; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; proxy_cache_lock on; proxy_pass http://my_upstream; }}
这些命令配置了下列的行为:
proxy_cache_revalidate指示 Nginx 在刷新来自服务器的内容时使用 GET 请求。如果客户端的请求项已经被缓存过了,但是在缓存控制头部中定义为过期,那么 Nginx 就会在 GET 请求中包含 If-Modified-Since 字段,发送至服务器端。这项配置可以节约带宽,因为对于 Nginx 已经缓存过的文件,服务器只会在该文件请求头中 Last-Modified 记录的时间内被修改时才将全部文件一起发送。
- proxy_cache_min_uses 该指令设置同一链接请求达到几次即被缓存,默认值为 1 。当缓存不断被填满时,这项设置便十分有用,因为这确保了只有那些被经常访问的内容会被缓存。
- proxy_cache_user_stale中的 updating 参数告知 Nginx 在客户端请求的项目的更新正在原服务器中下载时发送旧内容,而不是向服务器转发重复的请求。第一个请求陈旧文件的用户不得不等待文件在原服务器中更新完毕。陈旧的文件会返回给随后的请求直到更新后的文件被全部下载。
- proxy_cache_lock 被启用时,当多个客户端请求一个缓存中不存在的文件(或称之为一个 MISS),只有这些请求中的第一个被允许发送至服务器。其他请求在第一个请求得到满意结果之后在缓存中得到文件。如果不启用 proxy_cache_lock,则所有在缓存中找不到文件的请求都会直接与服务器通信。
跨多硬盘分割缓存
使用 Nginx 不需要建立一个 RAID(磁盘阵列)。如果有多个硬盘,Nginx 可以用来在多个硬盘之间分割缓存。下面是一个基于请求 URI 跨越两个硬盘之间均分缓存的例子:
proxy_cache_path /path/to/hdd1 levels=1:2 keys_zone=my_cache_hdd1:10m max_size=10ginactive=60m use_temp_path=off;proxy_cache_path /path/to/hdd2 levels=1:2 keys_zone=my_cache_hdd2:10m max_size=10g inactive=60m use_temp_path=off;split_clients $request_uri $my_cache { 50% "my_cache_hdd1"; 50% "my_cache_hdd2";}server { ... location / { proxy_cache $my_cache; proxy_pass http://my_upstream; }}
阅读全文
0 0
- nginx之缓存补充
- Nginx之页面缓存
- Nginx之页面缓存
- nginx之缓存
- 深入浅出Nginx之七【重要知识补充】
- 缓存补充:
- 缓存补充
- Nginx 补充
- nginx 优化之缓存技术
- nginx四 之缓存模块
- mybatis补充教程之三:缓存(cache)的使用
- nginx内置缓存Proxy_cache之清除
- Nginx 缓存配置之官方网址
- nginx 缓存 负载均衡之 split_clients
- Nginx 缓存机制 详解之二 缓存加载进程
- nginx学习之nginx的缓存设置 &提高网站性能
- 缓存(补充)
- Smarty缓存补充
- python入门(二):字符的编码
- dede织梦调用顶级二级栏目及下三级栏目方法(数据库实现)
- Shiro集成spring--权限管理
- 从Ubuntu开始体验Linux
- HDU1114完全背包模板
- nginx之缓存补充
- P1554 梦中的统计
- 如何将view转换成bitmap
- 手机拍摄的身份证怎么制作为复印件?
- jeecg 增删改查 后台代码
- 彻底精通JSON
- window.event.keyCode值整理
- 2017 Multi-University Training Contest
- Freemarker 教程