zoukankan      html  css  js  c++  java
  • nginx添加缓存

    参考资料   https://www.cnblogs.com/wangzhilei/p/6706102.html

    Nginx实现页面缓存

     

    页面缓存

    1、缓存指令

    Nginx的缓存配置比较直观简单,具体有下面几个指令需要知道:

    A、proxy_cache_path

    格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]

    说明:

    path -缓存文件存放的位置

    levels -缓存目录结构,可以是1、2、3位数字作为目录,最多是3位数字如:1,1:2

    keys_zone -指定缓存池名字及大小,每个定义缓存路径必须不同

    inactive -设置每个缓存区缓存文件的有效时长,超过该时长没被访问的缓存被删除

    max_size -设置不活动的缓存大小,不活动的缓存超过该大小后被删除

    B、proxy_cache

    格式:

    proxy_cache cache_name

    说明:

    指定缓存区域的名字,一个相同的区域可以在不同的地方使用。

    C、proxy_cache_valid

    格式:

    proxy_cache_valid reply_code [reply code…|any] time;

    说明:

    reply_code -不同的应答代码

    time -为不同应答设置不同缓存时长 默认为分钟m

    any - 代表任何代码

    2、页面缓存设置

    A、新建缓存页面

    $ mkdir –pv /nginx/cache/webpages

    B、配置nginx.conf

    proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;

        server {

            listen       80;

            server_name  localhost;

            charset utf-8;

            location / {

                proxy_passhttp://webservers;

                proxy_set_header X-Real-IP$remote_addr;

                proxy_cache webpages;

                proxy_cache_valid 20010m;

            }

        }

    最后,测试下配置是否正确:

    $sudo nginx –t

    然后,重载下nginx服务:

    $sudo nginx –s reload

    C、测试结果

    浏览器输入:http://127.0.0.1 然后查看缓存路径下是否生成缓存文件,以及缓存文件格式是否正确,缓存的结果:

    /nginx/cache/webpages/f/63/681ad4c77694b65d61c9985553a2763f

    上面的路径规则已经按照我们预期设置生成,缓存文件格式是url的hash格式,下面可以查看下这个文件是否是我们使用的页面,默认生成的缓存目录f 级别是不允许进入访问的,为了演示我已经给予其777权限了。

    $cat 681ad4c77694b65d61c9985553a2763f

     

    D、如何知道是否访问缓存?

    答案很简单,我们使用谷歌浏览器浏览网页,然后打开开发者面板,查看里面的Response Headers响应头中的信息:

    但从上面是看不出是否调用了缓存文件,因为需要额外配置下。首先,要了解下两个缓存变量:

    $server_addr - 显示的服务器地址

    $upstream_cache_status - 缓存的状态 可能的值为:MISS(未命中)、Hint(命中)、Expired(请求传递到后台)、Stale(后端得到过期的应答)、Updating(正更新,使用旧的应答)等。

    那么,在这里如果缓存的状态为HINT,就说明命中了缓存,也就是调用了缓存文件。接下来,配置下nginx.conf文件,然后重新加载,刷新页面即刻,具体如下:

    A、配置文件nginx.conf

    proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;

        server {

            listen       80;

            server_name  localhost;

            charset utf-8;

            #add headers

            add_header X-Via$server_addr;

            add_header X-Cache$upstream_cache_status;

            location / {

                proxy_passhttp://webservers;

                proxy_set_headerX-Real-IP $remote_addr;

                proxy_cache webpages;

                proxy_cache_valid 20010m;

            }

        }

    B、测试结果

    如上图中的Resonpse Headers部分,已经说明缓存已经调度了

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/pyng/p/10395310.html
Copyright © 2011-2022 走看看