Nginx缓存[proxy cache、memcache]

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的解决方案,这里先不讨论。

时间: 2024-10-25 11:44:24

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

nginx+rewrite+proxy+cache基本实验

今天分享下nginx+rewrite+proxy+cachenginx于apache的区别 1.nginx基于ip做限制小实验: worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_n

利用Proxy Cache使Nginx对静态资源进行缓存

前言 Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行缓存.其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快静态资源的响应. 配置Proxy Cache 以下为nginx配置片段: proxy_temp_path   /usr/local/nginx/proxy_temp_dir 1 2; #keys_zone=cache1:100m 表示这个zone名称为cache1,分配的内存大小为100MB #/usr/local/

nginx Proxy Cache 配置

总结一下 proxy cache 设置的常用指令及使用方法: proxy_cache proxy_cache zone | off 配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据.注意:zone 代表用于存放缓存索引的内存区域的名称(需要使用 proxy_cache_path指令设置):off 代表关闭Proxy Cache功能 proxy_cache_path proxy_cache_path path [levels=levels] keys_zone=name:size [in

Nginx/tengine做cache时缓存机制—存不存、存多久、用不用方法论(图自画)

Nginx/tengine(后面名称只写nginx了)单纯做cache性能比不过ats,特别是在磁盘处理方面,不过论综合能力nginx就是大拿了,他集web服务器.负载均衡.cache三种能力于一身,可以说是非常综合性的选手.比如说一个中型网站的场景选型,前端是负载,后端托着一堆apache服务器,现在该到前端负载选型的了,虽然lvs和ha单纯从负载的性能要比nginx好一些,但我还是会选nginx,因为nginx在做负载的同时,可以将热点的静态内容cache一遍,做一次加速,无形间减轻了后端w

Nginx缓存配置以及nginx ngx_cache_purge模块的使用

web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输出内容给客户端,而不是向源服务器再次发送请求.Web缓存降低了内容源Web服务器,数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户体验. web缓存服务器中,最著名的要数Squid Cache(简称为Squid),Squid是一个流浪的自由软件的代理服务器和Web缓存服务器.---

Nginx缓存和程序动静分离设置

一.配置Nginx缓存. 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path 语法 proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time];

nginx缓存

nginx有两种缓存机制:fastcgi_cache和proxy_cache下面我们来说说这两种缓存机制的区别吧proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力. proxy_cache缓存设置

linux nginx缓存

安装环境 一台nginx服务器 192.168.80.100两台web服务器 192.168.80.101,192.168.80.102 首先关闭防火墙 systemctl stop firewalldsetenforce 0注:可以写防火墙规则 需要一下几个包 nginx-1.13.5.tar //nginx包ngx_cache_purge-2.3.tar //清理缓存用的包pcre-8.41.tar //pcre 依赖包 解压包到/opt/下 tar xf ngx_cache_purge-2

11. Nginx缓存

缓存类型 浏览器缓存 Nginx代理服务器缓存 服务器缓存,例如Redis.Memcache等 缓存配置 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path upstream backend { server x.x.x.x:1023; server x.x.x.x:1024; server x.x.x.x:1025; } #缓存存放的位置是 /data/nginx/cache,目录层级为两层,最多存