• 缓存服务


    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;
    	}
    
    }
    

      

  • 相关阅读:
    margin问题
    IE6里面子集尺寸大的会把父亲撑大
    第一个元素<flout>写了,想在他的旁边加一个元素.IE6会出现缝隙. 不要用margin撑开,要用flout
    兼容性,float
    HTML5的兼容问题以及调用js文件的方法
    表单
    表格的编写,课程表
    SmartThreadPool
    C# 多线程的等待所有线程结束的一个问题
    DataTable保存与读取 stream
  • 原文地址:https://www.cnblogs.com/sellsa/p/7787780.html
Copyright © 2020-2023  润新知