zoukankan      html  css  js  c++  java
  • 缓存服务

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

    proxy_cache 把 URL 及相关组合当作 Key, 用 md5 算法对 Key 进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在该目录内。目前只能对指定的URL或者状态码设置缓存过期时间

    想清除指定 url的缓存,需要通过一个第三方模块:ngx_cache_purge,Nginx 无法动态加载模块,所以要使用 ngx_cache_purge 就必须在编译时就加上该模块

    wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
    tar zxf ngx_cache_purge-2.3.tar.gz
    cd nginx-1.8.0
    ./configure <旧的编译参数,可使用-V查看> --add-module=../ngx_cache_purge-2.3
    make
    /usr/local/nginx/sbin/nginx -s stop
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    cp ./objs/nginx /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx
    
    假设一个url为http://www.heboan.com/test.gif,通过访问http://www.heboan.com/purge/test.gif可以清除该URL缓存
    

    nginx配置

    upstream imooc {
    	server 192.168.88.2:80;
    	server 192.168.88.3:80;
    	server 192.168.88.4:80;
    
    }
    
    proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off;
    	/opt/app/cache  #存放缓存文件的目录
    	levels=1:2	#一般建议缓存目录按两层的目录来分级
    	keys_zone=imooc_cache:10m	#imooc_cache是我定义的zone的名字,后面调用的就是这个名字
    					#10m表示大小10MB,1MB大概可以存储8千个key,10m就是8万个,这个我们可以根据实际情况设置
    	max_size=10g   #表示控制/opt/app/cache目录最大为多大,因为我们不可能让它无限增长,把磁盘撑满,当用满之后,nginx就会实行淘汰规则
    	inactive=60m   #表示不活越的,这里的60m表示的是60分钟,表示60分钟内,如果这个缓存文件没有被访问机会被清理掉
    	use_temp_path=off  #建议把临时文件关闭,如果不关闭会有一些性能损耗
    
    server {
    	listen  80;
    	server_name	www.imooc.com;
    	
    	access_log  /var/log/nginx/imooc_proxy.access.log main;
    
    
    	location ~ /purge(/.*) { #清除缓存
    	allow 127.0.0.1;
    	allow 192.168.1.0/24;
    	deny all;
    	proxy_cache_purge cache_one $host$uri$is_args$args;
    	}
    
    	location / {
    		proxy_cache imooc_cache;	#表示开启前面定义的缓存imooc_cache
    		proxy_pass http://imooc;	
    		proxy_cache_valid 200 304 12h;	#表示状态码为200,304是12小时后过期
    		proxy_cache_valid any 10m;	#除了200和304以外的是10分钟后过期
    		proxy_cache_key $host$uri$is_args$args;   #缓存的key
    		add_header Nginx-Cache "$upstream_cache_status";  #增加的头信息,告诉客户端是否命中
    
    		proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
    		#当后端某一台服务器返回错误的状态信息,则跳过这台,访问其他服务器
    		include proxy_params;
    	}
    
    }
    

      

  • 相关阅读:
    C++学习之路(四):线程安全的单例模式
    C++学习之路(三):volatile关键字
    C++学习之路(五):复制构造函数与赋值运算符重载
    类对象作为函数参数进行值传递
    System V共享内存介绍
    关于迭代器失效
    C++学习之路(二):引用
    C++学习之路(一):const与define,结构体对齐,new/delete
    epoll内核源码分析
    Redux中间件之redux-thunk使用详解
  • 原文地址:https://www.cnblogs.com/sellsa/p/7787780.html
Copyright © 2011-2022 走看看