zoukankan      html  css  js  c++  java
  • Nginx作为静态资源web服务之缓存原理

     Nginx作为静态资源web服务之缓存原理


    大致理一下http浏览器缓存原理:
    浏览器第一次请求服务器,此时浏览器肯定没有缓存,则直接调用服务器端,服务器在返回的信息的信息头中添加 ETag和Last-Modified参数信息,返回给客户端浏览器缓存。
    然后浏览器以后的请求,先判断是否有缓存,那么怎么判断有缓存呢,有三步:
    (1)是否过期  
    (2)对ETag信息对比 ,ETag:  就是一个生成的字符串
    (3)对Last-Modified信息对比;Last-Modified:服务端最后一次修改的时间。
    如果没有过期,则将信息直接返回回去,如果过期了,则将请求发送到服务端,此时request的头信息中带着ETag和Last-Modified信息,responose头信息中也带着这两个参数,如果一致,则表示要访问的资源没有发生改变,直接返回304,如果不一致,则表明资源改变,会请求服务端,返回200。


    下面通过配置 缓存过期时间来让其实现缓存
    配置语法:expires 【modified】time;
     expires epoch | max | off;
    默认配置:expires off;
    配置路径:http、server、location、if in location

    使用demo测试

    1. 修改default.conf配置文件,添加如下配置,暂时不添加缓存配置

    2. 重新加载nginx,输入网址,看出客户端和服务端状态如下

    由上图可以看出,第一次请求是没有缓存的,访问服务器返回200,并且再返回的信息头中返回了以上的两个参数 ETag和Last-Modified。下面我们刷新,再来看看效果

    3. 刷新网页,查看状态

    由上图看出,第二次请求,返回的状态是304,在请求信息头中有上图两个参数,与服务端返回的参数对比,发现是一致的,所以直接返回 304。下面我们配置缓存过期时间

    4. 配置过期时间

    5. 刷新网址,看看效果

    由上图看出,服务器端返回的参数中有了过期时间,以及expires参数数据,因此过期时间配置成功。

  • 相关阅读:
    js--未来元素
    Nginx 浏览器打开是下载状态
    JS对象的深拷贝
    微信小程序--扫描二维码
    js--call( )/apply()/bind()--应用
    数学书籍
    【活动】你有创意我有奖!摹客X飞书2020产品设计大赛邀你来战
    APP设计实例解析,深色模式为什么突然就火了?
    焦虑求职季又至:2020UI设计师作品集如何准备?
    QQ音乐 vs 网易云音乐,用户体验哪家强?
  • 原文地址:https://www.cnblogs.com/duguxiaobiao/p/9128803.html
Copyright © 2011-2022 走看看