• Nginx与浏览器缓存


    Nginx与浏览器缓存

    一、浏览器对缓存的处理:Internet选项

      ★ 控制请求服务器策略:是忽略资源的缓存策略的情况下额外强制请求服务器的意思

        ★ 检查存储的页面较新版本

             1.每次访问网页时
                    不管是否有缓存、资源状态是否过期,都会再次请求服务器。
             2.每次启动Internet Explorer时
               不管是否有缓存、资源状态是否过期,都会再次请求服务器。
             3.自动
                    大体上和2是一样的,只是对于图片的策略有点不同。
             4.从不
                    完全按照资源的缓存策略来请求服务器。

       F5 刷新:请求服务端,但是会根据和服务器对比文件来确定是否下载
      ★ Ctrl + F5刷新:一定会去服务器下载。

    二、缓存控制策略

      ★Last-Modified/If-Modified-Since要配合Cache-Control使用,Etag/If-None-Match也要配合Cache-Control使用。

        ps: 分布式系统里多台机器间文件的last-modified必须保持一致,以免负载均衡到不同机器导致比对失败
           分布式系统尽量关闭掉Etag(每台机器生成的etag都会不一样)


      ★HTML通过meta的http-equiv属性控制浏览器缓存策略:通过设置Pragma和Cache-control和expires控制
        ps:只能控制html的缓存策略,不能控制css/js/图片的缓存策略。

        Cache-control的max-age和expires同时存在,那么先处理max-age。
        Cache-control指定了no-cache后,max-age和expires。
        Pragma: http 1.0 IE浏览器才识别,请求头中不会体现,但是确实有效果
        Cache-control: http 1.1

    三、Nginx设置浏览器缓存

          ★Nginx设置浏览器缓存:可以在http 、server、location节点中添加。可以设置各种资源的缓存策略,不仅仅是HTML。而<meta http-equiv>节点只针对HTML

      #add_header Cache-Control no-cache;
      #add_header Cache-Control private;
      add_header Cache-Control max-age=7200;

      if ($request_filename ~* ^.*?.(ico|jpeg|gif|jpg|png|woff)$){

        expires 7d;
      }
      if ($request_filename ~* ^.*?.(js|css)$){

        expires 7d;
      }
      if ($request_filename ~* ^.*?.(html|htm)$){

        expires 3d;
      }


      ★Nginx中的配置会覆盖HTML的http-equiv="Cache-control"配置。

       但是如果HTML中的加了下面3个标签,浏览器端效果还是只能no-cache(从效果上来看:Nginx的Cache-control配置无效)
              因为Nginx的Cache-control配置只是覆盖了Cache-control(如果html加的是后面两个标签,Nginx还是有效的),而Pragma仍然起着作用。

        <meta http-equiv="Pragma" content="no-cache"/>
        <meta http-equiv="Cache-control" content="no-cache;max-age=0"/>
        <meta http-equiv="expires" content="0"/>



  • 相关阅读:
    转载:人家编写的程序:「雀神 AI」Suphx
    一千六百万单表建联合索引对查询效率的提升
    索引对单列极值查询的显著性影响(百万级别表单列最值查询 Cost由1405变成3)
    经典SQL问题:Top 10%
    区间查询与等效minus查询
    『科学计算』L0、L1与L2范数_理解
    『Python』__getattr__()特殊方法
    『Json』常用方法记录
    『Pickle』数据结构持久化模块_常用方法记录
    『Re』知识工程作业_主体识别
  • 原文地址:https://www.cnblogs.com/caoshouling/p/8966062.html
Copyright © 2020-2023  润新知