码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • HTTP1.1强制缓存和协商缓存


     1.强制缓存主要取决于两个字段 Expires 和 Cache-Control 中的 max-age 字段,在时间有效期内如果设置了Expires强制缓存,则后续的请求直接从缓存(内存中)读取,不在进行服务端请求。

     2. 协商缓存:状态码304,能够解决在强制缓存资源不更新的问题。(换而言之:在时间有效期内,还想在服务端进行请求最新的资源。)

    Cache-Control :

    max-age:缓存过期时间

    no-cache(协商缓存)

    no-store:不协商缓存

    public:支持代理服务器缓存

    private:不支持代理服务器缓存

    协商缓存主要由 ETag 和 Last-Modified 两个字段来实现

    ETag 是一个用于映射 web 资源的映射 token,这个 token 应该满足唯一对应到一 个web服务器上的静态资源(具体实现通常是提取文件相关信息进行hash和base64编码等操作)

    默认情况下, 浏览器会优先考量强制缓存的情况, 当强制缓存生效的情况下, 请求并不会到达服务器, 因此也就不会触发协商缓存。 当强制缓存失效的时候, 浏览器便会将请求传递到服务器, 于是服务器又会开始校验 If-Modified-Since 和 If-None-math 两个字段, 重复上述协商缓存的一个执行流程.

    以下是nodejs下的服务端ETag实现协商缓存

    1. import ETag frpm 'Etag'
    2. var data='我是服务端数据资源';
    3. const pwd=ETag(data);//加密 类似token
    4. const ifNoneMatch=req.header['if-none-match']//判断是否一致
    5. if(ifNoneMatch===pwd){
    6. res.statusCode=304;//协商缓存 不进行请求 直接读取内存的资源
    7. res.end();
    8. retrun;
    9. }
    10. res.setHeader('etag',pwd); //设置etag标识
    11. res.setHeader('cache-control',no-cache);//设置协商缓存
    12. res.end(data);


     

  • 相关阅读:
    【基于pyAudioKits的Python音频信号处理(四)】傅里叶变换:从时域到频域
    Visual Studio Code安装和设置中文
    github 网页显示不全?
    工具:Linux 应急检测脚本
    指针类型的意义
    机器学习与图像识别(二)—— OpenCV环境折腾。。
    第14章 MySQL事务日志【3.事务篇】【MySQL高级】
    Idea加载gradle项目问题小记Gradle‘s dependency cache may be corrupt
    LAGRANGIAN FLUID SIMULATION WITH CONTINUOUS CONVOLUTIONS
    【洛谷 P4715】【深基16.例1】淘汰赛 题解(队列+模拟)
  • 原文地址:https://blog.csdn.net/qq_26695613/article/details/127859416
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号