zoukankan      html  css  js  c++  java
  • Nginx 浏览器缓存

    浏览器缓存原理

     HTTP协议定义的缓存机制(如:Expire;Cache-control等)

    浏览器无缓存场景图

    浏览器有缓存场景图

    缓存校验过期机制

     

    (1)第一步:客户端缓存校验

       第一步:本地客户端通过Expires、Cache-Control(max-age)字段校验本地缓存是否过期

        Expires出现在Http1.0版本;Cache-Control(max-age)出现在Http1.1版本;

    (2)第二步:Etag缓存校验

       第二步:通过Etag头信息校验服务器缓存是否过期,如果不过期,不走第三步,否则执行下一步

        Etag解释:

    •     Etag的值是一串字符串,在一秒时间内更新的话,服务端是无法识别的,这个时候就需要Etag校验

    (3)第三步:Last-Modified缓存校验

      第三步:通过Last-Modified头信息校验服务器缓存是否过期,如果不过期,直接返回,否则请求服务端。

        Last-Modified解释:

        Last-Modified的值是具体时间:年-月-日 时:分:秒

        Last-Modified用来跟服务端的缓存文件进行校验,如果服务端缓存文件在新的时间有新的更新,客户端请求的时间就会跟服务端缓存文件时间对比,这个时候就会出现客户端请求的时间跟服务端请求的时间不一致。 这样的话,服务端就会把最新的文件返回给客户端,这个利用的就是请求头中的Last-Modified头信息进行校验的。

     浏览器请求到服务端缓存原理图

     

    304状态码:客户端已经执行了GET,但文件未变化。

    浏览器缓存场景演示

    Nginx在响应头中添加:Cache-Control、Expires头

    expires过期时间语法

    Syntax: 

    • expires [modified] time;
    • expires epoch | max | off; 不常用

    Default:expires off;

    Context: http, server, location, if in location

    配置没有expires场景

    (1)配置location

        location ~ .*.(htm|html)$ {
            root  /opt/app/code;
        }
    

      

    (2)创建新的html文件

    在/opt/app/html目录下创建index.html文件并编写内容

    <h1>hello zhangbiao </h1>

    访问

    http://www.zhangbiao.com/index.html

    第一次请求

    连续请求 响应状态码 304 

    客户端请求头携带这两个字段,目的是跟服务端本地缓存文件对比

    • If-Modified-Since:
    • If-None-Match:

    Nginx配置expires场景 

    Nginx配置location

        location ~ .*.(htm|html)$ {
            expires 24h;
            root  /opt/app/code;
        }

      第一次请求:查看请求头和响应头信息

     

    响应头多了两个字段:

    • Cache-Control:
    • Expires:

    第二次请求:查看请求头和响应头信息

    响应头中Cache-Control字段在第一次和第二次的值都一样

     不管Nginx是否配置expires过期时间,第二次请求都会携带这两个字段

    • If-Modified-Since:
    • If-None-Match:

     

  • 相关阅读:
    基于python批量获取Url
    记一次tp5.0.11rce
    centOS 6.2 x64系统上安装 oracle 11g R2 x64
    用xmanager连接Linux的配置步骤
    0级备份和全备
    配置EM遇到的问题
    转:如何迁移oracle 队列表
    oracle audit
    VIEWS for Oracle object privileges
    Oracle 脚本
  • 原文地址:https://www.cnblogs.com/crazymagic/p/11028342.html
Copyright © 2011-2022 走看看