首页 > 其他分享 >缓存与http头部

缓存与http头部

时间:2024-07-18 15:21:47浏览次数:15  
标签:缓存 http 头部 cache 设置 服务器 浏览器 客户端

1 https://juejin.cn/post/6844903764566999054 实践这一次,彻底搞懂浏览器缓存机制

2 https://www.cyc2018.xyz/计算机基础/HTTP/HTTP.html#缓存 cyc#缓存

3 浏览器http请求缓存,cache-control是服务器设置,还是浏览器设置

本文链接:https://blog.csdn.net/qq_17335549/article/details/128630153

服务器和浏览器都可以分别在响应头和请求头设置cache-control字段。

  1. 如果都不设置,那么就不用缓存,毫无疑问

  2. 如果客户端设置,但是服务器没有设置

  3. 当且仅当,设置的值为是cache-control:max-age=0 | no-cache |no-store时,才会生效,(此时代表着客户端明确表示自己不想使用强缓存)

  4. 在点击浏览器的刷新按钮 / 或者直接按 f5 ,实际上就是给请求头设置了Cache-Control: max-age=0走协商缓存(if 条件请求)

  5. ctrl + f5【command+shift+r】 强制刷新,实际上就是给请求头设置了Cache-Control: no-store 就是不使用任何缓存,直接请求服务器资源

  6. 所以,浏览器用“Cache-Control”做缓存控制,在请求头中设置某些值,可以起到刷新数据的效果

  7. 客户端没有设置,服务器设置了

  8. 按照服务器设置的cache-control的值进行缓存

  9. 服务器和客户端都设置了

  10. 当客户端设置了cache-control:max-age=0 | no-cache |no-store这三个值时,服务器设置的无效

  11. 客户端设置了其他值,以服务器设置的值为准,忽略请求头的cache-control

  12. 所以有的人果断的说,如果客户端和服务端同时设置了以服务端为准这句话是不正确的。

不过在实际应用中,建议不要纠结在哪里设置,客户端设置不生效,就服务端设置即可。不同的浏览器可能有不同的处理。

4 ETag是HTTP1.1中才加入的一个属性,用来帮助服务器控制Web端的缓存验证。

https://www.cnblogs.com/xuzhudong/p/8339853.html

标签:缓存,http,头部,cache,设置,服务器,浏览器,客户端
From: https://www.cnblogs.com/sunupo/p/18309579

相关文章

  • 使用Java和Hazelcast构建高可用的分布式缓存系统
    使用Java和Hazelcast构建高可用的分布式缓存系统大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在分布式系统中,缓存是提高系统性能和可扩展性的关键组件之一。Hazelcast是一种高性能、易用的分布式内存数据网格,支持多种数据结构和分布式计算。本文将介绍......
  • `useHeadSafe`:安全生成HTML头部元素
    title:useHeadSafe:安全生成HTML头部元素date:2024/7/17updated:2024/7/17author:cmdragonexcerpt:摘要:“useHeadSafe”是Vue.js组合函数,用于安全生成HTML头部元素,通过限制输入值格式避免XSS等安全风险,提供了安全值白名单确保只有安全属性被添加。categories:......
  • 浏览器缓存:强缓存与协商缓存实现原理有哪些?
    1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。可参考:彻底弄懂强缓存与协商缓存-简书2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢?cache-control:no-cache,每次请求都回询问服务端,那么是如何询问?当浏......
  • HTTPS的加密方式超详细解读
    在了解https的加密方式之前,我们需要先行了解两个特别经典的传统加密方式,以此开始我们今天的学习之旅途。1、对称加密1.1、定义需要对加密和解密使用相同密钥的加密算法。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令......
  • go embed http server
    packagemainimport( "embed" "io/fs" "net/http")//go:embedall:distvarassetsembed.FSfuncAssets()(fs.FS,error){ returnfs.Sub(assets,"dist")}funcmain(){ assets,_:=Assets() //Usethefil......
  • Python爬虫(5-10)-编解码、ajax的get请求、ajax的post请求、URLError/HTTPError、微博
    五、编解码(Unicode编码)(1)GET请求所提方法都在urllib.parse.路径下get请求的quote()方法(适用于只提交一两个参数值)url='http://www.baidu.com/baidu?ie=utf-8&wd='#对汉字进行unicode编码name=urllib.parse.quote('白敬亭')url+=nameget请求的urlencode()方法(适用于......
  • frps内网穿透搭建&http域名连接
    起因是最近抽到了一台小鸡1H512M2G,当然,安装完系统后就仅剩512M的存储空间了所以就打算搭建一个比较轻量的我这里正好也没有公网ipv4,就搭建了frps(注意s->server;c->client下同)frps配置bindPort=10001vhostHTTPPort=10081webServer.addr="0.0.0.0"webServer.port......
  • Python实现基于http通信的protobuf数据传输的案例,包括请求者和接收者
    个人名片......
  • SpringMVC:@ResponseBody注解与HttpServletResponse对象
    在SpringMVC框架中,@ResponseBody注解和HttpServletResponse对象都扮演着将处理结果发送回客户端的重要角色,但它们的使用方式和目的有所不同。@ResponseBody@ResponseBody注解用于将方法的返回值绑定到web响应体(responsebody)上。当你使用@ResponseBody注解一个方法的返回值时,Sp......
  • redis学习-12(实现分布式锁、消息队列、缓存一致性问题、单线程快的原因、跳跃表)
    引用以下内容:redis实现分布式锁:Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)Redis实现分布式锁的7种方案,及正确使用姿势!redis实现消息队列Redis的学习教程(十)之使用Redis实现消息队列缓存一致性问题想要保证数据库和Redis缓存一致性,推荐采用先更新数......