资讯专栏INFORMATION COLUMN

Nginx与浏览器缓存

jerry / 485人阅读

摘要:与浏览器缓存一浏览器对缓存的处理选项控制请求服务器策略是忽略资源的缓存策略的情况下额外强制请求服务器的意思。而节点只针对中的配置会覆盖的配置。

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。而节点只针对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仍然起着作用。

    
    
    



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2318.html

相关文章

  • nginx安装配置|nginx负载均衡|nginx反向代理|gzip压缩|expires缓存

    摘要:是一款轻量级的服务器反向代理服务器及电子邮件代理服务器,并在一个协议下发行。是以反向代理的方式进行负载均衡的。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存...

    pkhope 评论0 收藏0
  • nginx做负载均衡器以及proxy缓存配置

    摘要:这个指令属于模块的,指定后端返回什么样的异常响应时,使用另一个是专门提供负载均衡器内节点的健康检查的外部模块,由淘宝的姚伟斌大神开发,通过它可以用来检测后端的健康状态。 关于nginx的安装和基本配置请参考nginx,本文在原基础上完成以下几个功能: 结合proxy和upstream模块实现nginx负载均衡 结合nginx_upstream_check_module模块实现后端服...

    Moxmi 评论0 收藏0
  • 微服务的接入层设计动静资源隔离

    摘要:接入层作用一的聚合。接入层作用二服务发现与动态负载均衡既然统一的入口变为了接入层,则接入层就有责任自动的发现后端拆分,聚合,扩容,缩容的服务集群,当后端服务有所变化的时候,能够实现健康检查和动态的负载均衡。 此文已由作者刘超授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 这个系列是微服务高并发设计,所以我们先从最外层的接入层入手,看都有什么样的策略保证高并发。...

    jindong 评论0 收藏0

发表评论

0条评论

jerry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<