nginx自带缓存

nginx自己有单独的进程来对磁盘上的缓存文件进行扫描,在内存中建立缓存索引。并且有管理进程来对缓存进行过期判断,更新等操作

定义:只能在http段中使用

proxy_cache_path /dev/shm/nginx/cache levels=1:2 keys_zone=one:10m inactive=5m loader_sleep=1m max_size=200m;

/dev/shm                #内存系统,这样缓存将更快。

level                    #一般最多三级,这里指定二级,第一级目录一个字符命名,第二级有两个字符命名。

keys_zone            #存储在内存中的元数据的大小

max_size                #存在shm的内容的大小,即缓存的数据的大小

inactive                 #如果缓存在指定时间内没有被访问,则强制更新

loader_time            #每隔指定直接更新内存缓存的索引

使用:一般在前端使用。后端做一个upstream,这样就缓存效果更好

location / {

root html;

index index.html index.htm;

proxy_pass http://wxl;

proxy_cache one;                        #使用刚定义的key_zone

proxy_cache_valid 200 1m;                #成功响应的缓存时间1分钟

}

缓存的内容大概是这个样子

# cat /dev/shm/nginx/cache/8/c5/8f800960e4ca2d295469ee9efa440c58

KEY: http://wxl/

HTTP/1.1 200 OK

Date: Sat, 16 Jan 2016 02:54:16 GMT

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Sat, 16 Jan 2016 02:49:51 GMT

ETag: "68cc-14-5296a92e464c3"

Accept-Ranges: bytes

Content-Length: 20

Connection: close

Content-Type: text/html; charset=UTF-8

 

server3.example.com

 

基于memcache缓存

对于常用的数据,也可以缓存在memcache中。性能很好,对于一般的场景都是比较好的选择

安装memcachd服务: yum install memcached

后面我以Python连接操作memcache,所以顺便安装连接器:yum install python-memcached.noarch

server {

    listen 80;

server_name www.wxl-dede.com;

 

    location / {

    root html;

    set $memcached_key "$uri";                

    memcached_pass 127.0.0.1:11211;

    memcached_connect_timeout 5s;

    memcached_read_timeout 5s;

    memcached_send_timeout 5s;

    memcached_buffer_size 32k;

    error_page 404 502 504 = @fallback;

    }

    location @fallback {

    proxy_pass http://wxl;

    }

}

一些指令的解释:

memcached_pass address[:port]/upstream;         #连接memcache

memcached_connect_timeout time;                #连接超时时间

memcached_read_timeout 5s;                    #nginx服务器向mc发出两次写请求之间的等待时间,如果在该段时间内没有进行数据传输,连接将关闭

memcached_read_timeout 5s;        #两次读请求之间

memcached_buffer_size 32k;            #nginx接收mc数据的缓冲区大小

 

这里使用一张图片做测试

>>> f = open("/root/p.jpg")

>>> f=f.read()

>>> mc.add('/pic',f)

访问:http://www.wxl-dede.com/pic

访问其他连接直接转到其他fallback

需要注意的是,nginx只是读数据,但是写数据是有后端的程序来完成。nginx有其他的模块来支持nginx在mc中操作数据,比如:memc_nginx和srcache_nginx的解决方案,这里先不讨论。

Nginx缓存[proxy cache、memcache]的更多相关文章

  1. nginx之proxy、cache、upstream模块学习

    nginx之proxy反向代理模块: location ^~ /proxy_path/ { root "/www/html"; 这里没必要配置 index index.html; ...

  2. nginx proxy cache配置和清理

    1.nginx需要编译Purge模块 2.nginx.conf 配置cache: proxy_cache_path  /home/cache/xxx levels=1:2  keys_zone=cac ...

  3. nginx Proxy Cache 配置

    总结一下 proxy cache 设置的常用指令及使用方法: proxy_cache proxy_cache zone | off 配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据.注意:z ...

  4. Cache,MemCache,Application,Cookie等其它缓存汇总

    为了提高网页运行速度我们用到了各种缓存技术,今天就来汇总下,相信聪明的你也一定会有所收获的o(^▽^)o 1.Cache(PS:看见一个博客介绍的不错,我就直接Copy了) Cache 即高速缓存.那 ...

  5. nginx缓存配置的操作记录梳理

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...

  6. Nginx实现负载均衡&Nginx缓存功能

    一.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl ...

  7. Nginx缓存

    一.基于proxy_cache的缓存 worker_processes ; events { worker_connections ; } http { include mime.types; def ...

  8. Nginx缓存服务

    Nginx缓存服务 1.缓存常见类型 2.缓存配置语法 3.缓存配置实践 4.缓存清理实践 5.部分页面不缓存 6.缓存日志记录统计 通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后 ...

  9. debian下配置nginx缓存

    root权限下 新建/usr/nginx/cache/webpages目录 在/etc/nginx/sites-available下找到自己所需配置的文件,打开文件后在开头加上proxy_cache_ ...

随机推荐

  1. 使用iconv的包装类CharsetConverter进行编码转换的示例

    GitHub地址https://github.com/BuYishi/charset_converter_test charset_converter_test.cpp #include <io ...

  2. MM02函数

    ATA: ls_headdata LIKE bapimathead, ls_clientdata LIKE bapi_mara, ls_clientdatax LIKE bapi_marax, ls_ ...

  3. js appendChild 自带remove和append两个功能

    一提到appendChild ,我们就知道是在父节点上增加子节点. 经常使用到它就是动态增加一个元素,将其加入到指定的父节点下. 其实appendChild除了这个功能之外,他还有一个功能:如果子节点 ...

  4. (linux)SD卡初始化-mmc_sd_init_card函数(续)

      转自:http://www.cnblogs.com/fengeryi/p/3472728.html   mmc_sd_init_card剩下的关于UHS-I的分支结构. uhs-I的初始化流程图如 ...

  5. 用jetty起maven工程debug报source not found

    之前基本都是tomcat启maven本工程 惯性的处理方式是 直接点击lookup source 直接先删除default工程 然后选择导入java project 找到源码所在的工程 但是一般情况下 ...

  6. Spring Boot2.0+Redis+Ehcache实现二级缓存

    EHCache 本地缓存 Redis 分布式缓存(可以共享) 一级 Redis 二级Ehcache    当redis挂了 有备胎 反之: 先走本地,本地没有再走网络  尽量少走Redis  效率会高 ...

  7. js判断字符串是否包含某个字符串

    String对象的方法 1,indexOf() (推荐) 方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1 var str = "123 ...

  8. iOS自定义提示弹出框(类似UIAlertView)

    菜鸟一枚,大神勿喷.自己在牛刀小试的时候,发现系统的UIAlertView有点不喜欢,然后就自己自定义了一个UIAlertView,基本上实现了系统的UIAlertView,可以根据项目的需求修改UI ...

  9. cassandra复制到一个新机器编译失败的问题

    在A机器上ant编译后,复制到B机器,在B机器上编译会出错. 原因是载入一些文件时出错,因为路径还是A机器上的路径. 经过与git上的源代码对比,发现多了一个build文件夹,这可能是ant生成的目录 ...

  10. 洛谷P1113杂物——DP

    题目:https://www.luogu.org/problemnew/show/P1113 每个任务的时间就是准备工作中完成最晚的那个的时间再加上自己的时间. 代码如下: #include<i ...