zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    string的erase函数和find、find_first_of函数
    strtok和strtok_r
    Linux添加硬盘 挂载硬盘(附 Linux磁盘挂载和mount共享 带图)
    linux下访问中文目录文件
    用yield写协程实现生产者消费者
    用进程池和线程池实现高并发服务器
    python自带线程池
    python自带进程池
    模拟线程池代码
    面向对象的多次调用线程(含参版)
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/15208124.html
Copyright © 2011-2022 走看看