首页
学习
活动
专区
圈层
工具
发布

面试官:你懂 HTTP 缓存,那说下浏览器强制刷新是怎么实现的?

HTTP 缓存是前端面试必问的知识点,大多数前端也都能答出强缓存和协商缓存来,但如果换个问法呢? 比如问浏览器的强制刷新实现原理是什么? 你还能答出来么?...Cache-Control 的 header 还是一样的: 明明缓存设置没有变,怎么缓存就失效了呢?...,浏览器除了强制刷新,还有一个清空缓存并强制刷新呀,那个是啥意思?...如果要更新的话,html 文件协商后发现有更新会下载新 html,这时候关联了其他 hash 的文件,浏览器会下载新的,不会走到之前文件的缓存。...还有个清空缓存并强制刷新的功能,那个是清掉本地的缓存再去协商,能保证一定是拿到最新的资源。 能答出网站缓存设置的最佳实践,也知道强制刷新的实现原理,就算是理论结合实践,真正搞懂 http 缓存了。

1.5K30

深入理解浏览器的缓存机制

先来看一下百度百科对它的定义: 浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档...本篇文章会从缓存位置、缓存过程分析、缓存类型、缓存机制、缓存策略以及用户行为对浏览器缓存的影响几方面带你一步步深入了解浏览器缓存。 ?...协商缓存 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程,主要有以下两种情况: 协商缓存生效,返回 304 和 Not Modified...而为了解决更新的问题,就需要在文件名 (或者路径) 中添加 hash, 版本号等动态字符,之后更改动态字符,从而达到更改引用 URL 的目的,让之前的强制缓存失效 (其实并未立即失效,只是不再使用了而已...用户行为对浏览器缓存的影响 所谓用户行为对浏览器缓存的影响,指的就是用户在浏览器如何操作时,会触发怎样的缓存策略。主要有 3 种: 打开网页,地址栏输入地址:查找 disk cache 中是否有匹配。

1.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【转-干货】Retrofit2.0使用总结及注意事项

    开始异军突起,而Retrofit则对okHttp进行了强制依赖。...,其将请求返回javaBean,对网络认证 REST API进行了很好对支持此,使用Retrofit将会极大的提高我们应用的网络体验。...更多关于REST的介绍:什么是REST - GitHub讲解的非常详细 2.0与1.9使用比较 如果之前使用过Retrofit1,会发现2.0后的API会有一些变化, 比如创建方式,拦截器,错误处理,转换器等...noCache :不使用缓存,全部走网络 noStore : 不使用缓存,也不存储缓存 onlyIfCached : 只使用缓存 maxAge :设置最大失效时间,失效则不使用 maxStale...:设置最大失效时间,失效则不使用 minFresh :设置最小有效时间,失效则不使用 FORCE_NETWORK : 强制走网络 FORCE_CACHE :强制走缓存 配置目录 这个是缓存文件的存放位置

    6.1K30

    一文读懂浏览器缓存

    缓存读写顺序 当浏览器对一个资源(比如一个外链的 a.js)进行请求的时候会发生什么?请从缓存的角度大概说下: ?...调用 Service Worker 的 fetch 事件获取资源; 查看 memory cache; 查看 disk cache;这里又细分: 如果有强制缓存且未失效,则使用强制缓存,不请求服务器。...这时的状态码全部是 200; 如果有强制缓存但已失效,使用协商缓存,比较后确定 304 还是 200; 发送网络请求,等待网络响应; 把响应内容存入 disk cache (如果请求头信息配置可以存的话...❞ 缓存按照缓存位置划分,其实还有一个 HTTP/2 的内容 push cache,由于目前国内对 HTTP/2 应用还不广泛,且网上对 push cache 的知识还不齐全,所以本篇不打算介绍这块,感兴趣的可以阅读这篇文章...响应头中不包含 Last-Modified/Etag,也不包含 Cache-Control/Expires 的请求无法被缓存; 参考文章 深入理解浏览器的缓存机制 一文读懂前端缓存 Service_Worker_API

    65220

    什么是REST API

    REST API是两个计算机系统在web浏览器和服务器中使用HTTP技术进行通信的一种方式。 在两个或多个系统之间共享数据一直是软件开发的一个基本要求。比如说,考虑购买汽车保险。...换句话说,应该可以按照任何顺序发出两个或更多的HTTP请求,并且会收到相同的响应(除非API被设计为返回随机响应)。 「可缓存」(Cacheable):响应应该被定义为可缓存或不可缓存。...} 客户端REST请求和CORS 考虑在浏览器中启动以下HTML页面,URL是http://localhost:8888/ : 浏览器向REST API发出两个请求: 对同一URL的HTTP OPTIONS请求确定Access-Control-Allow-Origin HTTP响应头是否有效。 实际的REST调用。...REST API版本控制 API的变化是不可避免的,但端点的URL永远不应该失效,否则会破坏使用它们的应用程序。 为了避免兼容性问题,API通常是有版本的。

    6K20

    聊一聊接口测试中缓存处理策略

    在测试开始前,清除测试环境中的缓存(如浏览器缓存、CDN缓存、服务器缓存等)。...t=" + str(time.time()))修改请求头设置禁用缓存的请求头:httpGET /api/data HTTP/1.1Host: api.example.comCache-Control: ...("https://api.example.com/data", data={})二、主动清除缓存清除本地缓存浏览器:Ctrl+Shift+R(强制刷新)或清除缓存命令行工具:curl 默认不缓存,或添加...= requests.get("https://api.example.com/data")assert response1.text == response2.text  # 确认响应一致缓存失效测试触发数据更新后...,验证缓存是否失效:python# 更新数据requests.post("https://api.example.com/data", json={"key": "new_value"})# 等待缓存过期或主动刷新

    40120

    ⚡REST 和 SOAP 协议有什么区别?

    REST 的目标是轻量级、与浏览器高度兼容、将客户端与服务器分离并提供缓存功能。那么,如果 REST 出现在 SOAP 之后,并且 REST 解决了 SOAP 的问题,为什么 SOAP 还存在呢?...### 支持 JSON 消息格式REST 使用 JSON 作为数据格式有几个优点:* **浏览器兼容性**:JSON 作为一种数据格式,与浏览器非常兼容,对浏览器更友好。...### REST 剖析REST API 由以下部分组成:* **请求方法:** 希望对资源执行的 CRUD 操作。在本例中,HTTP 方法 POST 表示希望创建某个内容。...这是通过 REST 使用 URL 分离端点并利用 HTTP 请求头执行 CRUD 操作实现的,而 SOAP 则因其 POST 请求方式而难以实现缓存。...REST 的优势使其非常适合资源受限的公开 Web 服务。REST 的数据格式 JSON 与浏览器高度兼容,并且比 SOAP 的 XML 有效载荷所需的带宽更少。REST 还强制要求前后端的分离。

    1.7K00

    微服务架构中的进程间通信

    但是有时候,您必须对API进行主要的、不兼容的更改。由于您无法强制客户端立即升级,服务必须支持较旧版本的API一段时间。如果您使用基于HTTP的机制(如REST),则一种方法是将版本号嵌入到URL中。...两种流行协议是REST和Thrift。我们先来看一下REST。 REST 今天开发REST风格的API是时尚的。 REST是一种(几乎总是使用HTTP)的IPC机制。...这使服务能够利用Web基础设施,如缓存GET请求。 3级 - 3级API的设计是基于非常有名的HATEOAS(超文本作为应用状态引擎)原理。...您可以使用扩展名(如Postman)从浏览器中测试HTTP API,或使用curl从命令行测试HTTP API(假设使用了JSON或其他一些文本格式)。...当然,JSON是人性化和浏览器友好的。 Thrift还为您提供了包括原始TCP和HTTP在内的传输协议选择。原始TCP可能比HTTP更有效率。然而,HTTP是防火墙,浏览器和人性化的。

    3K50

    彻底解决SESSION过期异常:一文讲透Http的缓存机制

    强制缓存 强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程,强制缓存的情况主要有三种: 不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求(跟第一次发起请求一致...),如下图: 存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存(暂不分析),如下图: 存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果,如下图: 那么强制缓存的缓存规则是什么...当浏览器向服务器发起请求时,服务器会将缓存规则放入 HTTP响应报文的 HTTP头中和请求结果【HTTP BODY】一起返回给浏览器,控制强制缓存的字段分别是 Expires 和 Cache-Control...协商缓存 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。...强制缓存由客户端【浏览器】决定是否使用缓存;协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回 304,继续使用缓存,主要过程如下

    3.2K30

    Microsoft REST API指南

    7.5 标准的请求标头 下面的请求标头表 应该遵循 Microsoft REST API指南服务使用。使用这些标题不是强制性的,但如果使用它们则必须始终一致地使用。...CORS 跨域 符合Microsoft REST API准则的服务必须支持CORS(跨源资源共享)。 服务应该支持CORS *的允许起源,并通过有效的OAuth令牌强制授权。...注意,虽然习惯上使用较大的值,比如2592000(30天),但是许多浏览器会自动设置一个更低的限制(例如,5分钟)。 众所周知,由于浏览器预检响应缓存很弱,因此预检响应的额外往返会损害性能。...[*]译者注:获取预检OPTIONS调用会造成很大开销,而且也浏览器的缓存能力也很赢弱,而且部分浏览器也不会理会access-control-max-age的设置值,如Chrome/Blink 就硬编码为...服务器驱动的分页:通过在多个响应有效载荷上强制分页请求来减轻拒绝服务攻击。 客户端驱动的分页:允许客户机只请求它在给定时间可以使用的资源数量。

    6.2K11

    大型网站必备,彻底理解Http的缓存机制!

    概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: HTTP请求...强制缓存 强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程,强制缓存的情况主要有三种: 不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求(跟第一次发起请求一致...存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存(暂不分析),如下图: ? 存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果,如下图: ?...当浏览器向服务器发起请求时,服务器会将缓存规则放入 HTTP 响应报文的 HTTP头中和请求结果一起返回给浏览器,控制强制缓存 的字段分别是 Expires 和 Cache-Control,其中 Cache-Control...协商缓存 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。 主要有以下两种情况: 协商缓存生效,返回 304,如下: ?

    90520

    彻底弄懂HTTP缓存机制及原理

    在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。...在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。...image HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我将其分为两大类(强制缓存,对比缓存) 在详细介绍这两种规则之前,先通过时序图的方式,让大家对这两种规则有个简单了解。...强制缓存 从上文我们得知,强制缓存,在缓存数据未失效的情况下,可以直接使用缓存数据,那么浏览器是如何判断缓存数据是否失效呢?...对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control) 使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况

    96610

    干货 | 彻底弄懂 HTTP 缓存机制及原理

    在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。...HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我将其分为两大类(强制缓存,对比缓存)。 在详细介绍这两种规则之前,先通过时序图的方式,让大家对这两种规则有个简单了解。...强制缓存 从上文我们得知,强制缓存,在缓存数据未失效的情况下,可以直接使用缓存数据,那么浏览器是如何判断缓存数据是否失效呢?...对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control),使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况。...=xxx:   缓存的内容将在 xxx 秒后失效 no-cache:          需要使用对比缓存来验证缓存数据(后面介绍) no-store:           所有内容都不会缓存,强制缓存,

    65630

    彻底弄懂HTTP缓存机制及原理

    在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。...在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。...HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我将其分为两大类(强制缓存,对比缓存) 在详细介绍这两种规则之前,先通过时序图的方式,让大家对这两种规则有个简单了解。...强制缓存 从上文我们得知,强制缓存,在缓存数据未失效的情况下,可以直接使用缓存数据,那么浏览器是如何判断缓存数据是否失效呢?...对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control) 使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况 ?

    58530

    你清楚HTTP缓存机制和原理吗?

    在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。...在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。...HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,我将其分为两大类(强制缓存,对比缓存),在详细介绍这两种规则之前,先通过时序图的方式,让大家对这两种规则有个简单了解。...强制缓存 从上文我们得知,强制缓存,在缓存数据未失效的情况下,可以直接使用缓存数据,那么浏览器是如何判断缓存数据是否失效呢?...对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control) 使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况 ?

    96020

    flask 应用程序编程接口(API)最后一节

    一个给定的API是否符合REST规范的话题往往是REST“纯粹主义者”之间激烈冲突的源头,REST“纯粹主义者”认为REST API必须以非常明确的方式遵循全部六个特征,而不像REST“实用主义者”那样...Fielding和其他REST纯粹主义者对评判一个API是否是REST API有严格的规定,但软件行业在实际使用中引用REST是很常见的。...有一个您可能熟悉的缓存实现:所有Web浏览器中的缓存。层通常为避免一遍又一遍地请求相同的文件,例如图像。...为了达到API的目的,目标服务器需要通过使用缓存控制来指示响应是否可以在代理服务器传回客户端时进行缓存。...因为这个原则需要服务器和客户端之间就可以客户端能够运行您可能会认为服务器可能会返回JavaScript代码以供Web浏览器客户端执行,但REST非专门针对Web浏览器客户端而设计。

    6.2K10

    微服务架构究竟应该怎么进行服务通信?

    同步模式主流的有REST和gRPC这两种通信模式。 使用REST REST是一种使用HTTP协议的进程间通信机制,如今的开发者也非常喜欢使用RESTful风格来开发API。...REST中的一个关键概念是资源,它通常表示单个业务对象,例如客户或产品,或业务对象的集合。 REST使用HTTP动词来操作资源,使用URL引用这些资源。...可以使用浏览器扩展(比如Postman插件)或者curl之类的命令行(假设使用的是JSON或其他文本格式)来测试HTTP API。 直接支持请求/响应方式的通信。 HTTP对防火墙友好。...有时很难将多个更新操作映射到HTTP动词。 使用gRPC gRPC API由一个或多个服务和请求/响应消息定义组成。服务定义类似于Java接口,是强类型方法的集合。...消息缓存:消息代理可以在消息被处理之前一直缓存消息。像HTTP这样的同步请求/响应协议,在交换数据时,发送方和接收方必须同时在线。

    1.6K40

    Cookie和Session区别及原理

    Cookie 中的键值对均为字符串。...1.3、Cookie保存位置 默认情况下,Cookie 是保存在浏览器的缓存中的,浏览器关闭,缓存消失,Cookie 消失。...Cookie 的有效时长 setMaxAge(int expiry),形参 expiry 的单位为秒,整型 若其值大于 0,则表示要将 Cookie 写入到硬盘文件中;小于 0,则表示 Cookie 存放在浏览器缓存中...注意: Cookie过期时间依然为默认浏览器关闭,Session过期时间这里为默认30分钟 客户端接收并发送 Cookie 客户端接收到这个 Cookie 后会将其存放到浏览器的缓存中。...即,只要客户端浏览器不关闭,浏览器缓存中的 Cookie 就不会消失。 当用户提交第二次请求时,会将缓存中的这个 Cookie,伴随着请求的头部信息,一块发送到服务端。

    48210

    缓存策略

    no-cache: 强制浏览器在使用cache拷贝之前先提交一个http请求到源服务器进行确认。这对身份验证来说是非常有用的,能比较好的遵守 (可以结合public进行考虑)。...CDN缓存刷新CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。...如果combo的url中任何一个文件发生改变,都会导致整个url缓存失效,从而导致浏览器缓存利用率降低。...对于manifest文件进行缓存的时候需要十分小心,因为可能出现一种情况就是你对manifest文件进行了更新,但是http的缓存规则告诉浏览器本地缓存的manifest文件还没过期,这个情况下浏览器还是使用原来的...、图片等资源增加HTTP缓存头,并强制入口Html不被缓存 减少对Cookie的依赖 减少对HTTPS加密协议的使用 多用Get方式请求动态Cgi 动态CGI也是可以被缓存 扩展阅读: HTTP1.1与前端性能

    1.3K10

    浏览器缓存机制与分类(一)

    前言====处理好浏览器缓存对提升系统的性能有很大的帮助,为什么要使用缓存,我们一般请求资源后直接使用,当我们再次请求资源时,还要继续从服务器拿到数据吗?...对比缓存对比缓存也叫做协商缓存,当强制缓存失效(超过规定时间),就会使用对比缓存,由服务器决定缓存内荣是否失效。 浏览器先请求缓存数据库,返回一个缓存标识。之后浏览器拿这个标识和服务器通讯。...如果缓存未失效,则返回 HTTP 状态码 304 表示继续使用,于是客户端继续使用缓存;如果失效,则返回新的数据和缓存规则,浏览器响应数据后,再把规则写入到缓存数据库 对比缓存在请求数和没有缓存是一致的...这里又细分:如果有强制缓存且未失效,则使用强制缓存,不请求服务器。...这时的状态码全部是 200如果有强制缓存但已失效,使用对比缓存,比较后确定 304 还是 200发送网络请求,等待网络响应把响应内容存入 disk cache (如果 HTTP 头信息配置可以存的话)把响应内容

    55310
    领券