• http-缓存


    1. 背景

    相同内容静态资源,可以通过读取本地缓存的静态资源,以达到提高网页性能,读取本地缓存速度比从服务器上获取速度快,并且没有网络IO

    1. 缓存原理

    img

    1. 缓存参数

    Cache-Control

    • 代理与浏览器都可以缓存 -- pubilc
    • 仅仅浏览器可以缓存 -- private
    • 禁止浏览器缓存 -- no-cache
    • 缓存过期时间,单位秒 -- max-age=
    1. Demo

    Cache-Control: "max-age=100,private"
    
    1. 缓存方案

    1. 浏览器端缓存静态资源
    2. 服务器端通过对静态资源进行md5运算,运算的值会放在文件名后面
    3. 然后会在静态资源引用中引用新的静态资源从而使用最新的静态资源
    
    1. 缓存验证

    • Last-Modified + If-Modified-Since
    Last-Modified 是静态资源上次修改时间
    
    //1. 服务器在响应头中返回1个头 Last-Modified 包含当前静态资源的上次修改时间
    //2. 浏览器请求时会携带 If-Modified-Since 给服务端
    //3. 服务端会读取这个If-Modified-Since获取客户端缓存静态资源上一次修改时间对比保存在服务器端静态资源上次修改时间,如果一致则返回空,头部包含Last-Modified为If-Modified-Since值一样,不一样返回新的Last-Modified与新的静态资源
    //4. 客户端对应Last-Modified决定使用本地缓存还是缓存新的静态资源并使用
    
    • Etag + if-none-match
    Etag 是静态文件的数字前面
    
    // 1. 服务器端响应时将静态资源文件进行MD5运算产生文件的签名,返回给客户端
    // 2. 客户端下次请求会携带 if-none-match 头给服务端,服务端可以读取该值然后比较该值,如果相等则直接返回一样的Etag,不返回静态资源,如果不一样返回新的Etag并返回新的静态资源
    // 3. 客户端对比Etag决定使用本地缓存还是缓存新的静态资源并使用
    

    img

  • 相关阅读:
    sql语句开发使用---update
    获取弹出框的句柄,关闭弹出框
    水晶报表使用,解决相同数据库不同服务器使用同一个水晶报表模板问题?
    第一章 什么是SQL Server Integration Services (ssis) 系统。
    在 win 10 中使用sql 2012 附加低版本数据失败的解决办法。
    窗体间传值 委托应用
    有点小激动
    Adam
    SVN Unable to connect to a repository at URL问题解决
    C#基础---IComparable用法,实现List<T>.sort()排序
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/15208124.html
Copyright © 2020-2023  润新知