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

HTTP的缓存机制是什么?

2.缓存控制: Cache-Control 标头:Cache-Control 是 HTTP 协议定义的一个重要标头字段,用于控制缓存行为。...客户端在后续请求中可以通过发送 If-None-Match 标头将 ETag 发送回服务器,以检查资源是否发生了变化。...4.缓存策略: 强缓存:通过设置合适的缓存控制标头(如 Cache-Control 和 Expires),服务器可以要求客户端或代理服务器始终使用缓存副本,而不需要进行验证。...协商缓存:如果缓存控制标头指定了需要进行验证,客户端会向服务器发送验证请求。...开发者应该合理利用缓存机制,并根据资源的特性和业务需求来设置适当的缓存策略和控制标头,以实现更好的用户体验和网络效率。

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

    对不起,看完这篇HTTP,真的可以吊打面试官

    缓存控制 HTTP/1.1 中的 Cache-Control 常规标头字段用于执行缓存控制,使用此标头可通过其提供的各种指令来定义缓存策略。...Cache-Control: must-revalidate 下面是一个缓存验证图 ? 什么是新鲜的数据 一旦资源存储在缓存中,理论上就可以永远被缓存使用。...如果 Etag 标头是资源响应的一部分,则客户端可以在未来请求的标头中发出 If-None-Match,以验证缓存的资源。...浏览器在发出预检请求时使用 Access-Control-Request-Headers 请求标头,使服务器知道在发出实际请求时客户端可能发送的 HTTP 标头。...此标头是必需的,因为预检请求始终是 OPTIONS,并且使用的方法与实际请求不同。

    7.1K21

    HTTP headers

    端到端头 这些标头必须发送给消息的最终接收者:请求的服务器,或响应的客户端。中间代理必须重新传输未经修改的标头,并且缓存必须存储它们。...逐跳标题 这些标头仅对单个传输级连接有意义,并且不得由代理重新传输或缓存。请注意,只能使用Connection常规标头设置逐跳标头。...这样可以确保特定范围的新片段与先前片段的一致性,或者在修改现有文档时实现乐观的并发控制系统。 Vary 确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求新的响应。...这只是一个提示,并不一定要在用户的完全控制下:服务器应始终注意不要覆盖明确的用户选择(例如从下拉菜单中选择语言)。 控制项 Section Expect 指示服务器正确处理请求需要满足的期望。...Referrer-Policy 控制在Referer标头中发送的引荐来源信息应包含在所提出的请求中。

    8.3K70

    HTTP概述

    代理可以执行许多功能: 缓存(缓存可以是公共缓存,也可以是私有缓存,例如浏览器缓存) 过滤(例如防病毒扫描或家长控制) 负载平衡(以允许多个服务器满足不同的请求) 身份验证(控制对不同资源的访问) 日志记录...使用标头可扩展性,HTTP Cookie被添加到工作流中,从而允许在每个HTTP请求上创建会话以共享相同的上下文或相同的状态。...HTTP和连接Section 连接是在传输层进行控制的,因此基本上不在HTTP的范围之内。...这是可通过HTTP控制的常见功能列表。 缓存可以通过HTTP控制如何缓存文档。服务器可以指示代理和客户端有关要缓存的内容以及缓存的时间。客户端可以指示中间缓存代理忽略存储的文档。...HTTP 标头,例如用于请求的标头。 (可选)包含获取的资源的主体。

    96220

    如何在Ubuntu 16.04上使用Nginx的头模块实现浏览器缓存

    此模块可用于向响应添加任意任意标头,但其主要作用是正确设置缓存标头。在本教程中,我们将了解如何使用Nginx的头模块来实现浏览器缓存。...使用Web浏览器时,如果浏览器想要再次请求相同的文件(例如,刷新页面时),ETag则会将值存储并发送回带有If-None-Match请求标头的服务器。 我们可以使用以下命令在命令行上模拟它。...第3步 - 配置缓存控制和过期标头 除了ETag文件验证头之外,还有两个缓存控制响应头:Cache-Control和Expires。...如果未设置标头,浏览器将始终从服务器请求文件,期望200 OK或304 Not Modified响应。 我们可以使用头模块来设置这些HTTP头。...它还可以在搜索引擎上产生更好的结果,将速度测试纳入其结果。设置浏览器缓存标头是Google的PageSpeed测试工具的主要建议之一。

    1.7K30

    如何在CentOS 7上使用Nginx的头模块实现浏览器缓存

    此模块可用于向响应添加任意任意标头,但其主要作用是正确设置缓存标头。在本教程中,我们将了解如何使用Nginx的头模块来实现浏览器缓存。...使用Web浏览器时,如果浏览器想要再次请求相同的文件(例如,刷新页面时),则会将ETag值存储并发送回带有If-None-Match请求标头的服务器。 我们可以使用以下命令在命令行上模拟它。...第3步 - 配置缓存控制和过期标头 除了ETag文件验证头之外,还有两个缓存控制响应头:Cache-Control和Expires。...如果未设置标头,浏览器将始终从服务器请求文件,期望200 OK或304 Not Modified响应。 我们可以使用头模块来设置这些HTTP头。...test.js和test.css还有JavaScript和设置缓存头的样式表文件的结果应该是都相似的。 这意味着缓存控制标头已正确配置,您的网站将受益于性能提升和由于浏览器缓存导致的服务器请求减少。

    1.8K00

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    一般表示方法如下 Cache-Control: public 缓存控制 HTTP/1.1 中的 Cache-Control 常规标头字段用于执行缓存控制,使用此标头可通过其提供的各种指令来定义缓存策略...Cache-Control: must-revalidate 下面是一个缓存验证图 什么是新鲜的数据 一旦资源存储在缓存中,理论上就可以永远被缓存使用。...如果 Etag 标头是资源响应的一部分,则客户端可以在未来请求的标头中发出 If-None-Match,以验证缓存的资源。...浏览器在发出预检请求时使用 Access-Control-Request-Headers 请求标头,使服务器知道在发出实际请求时客户端可能发送的 HTTP 标头。...此标头是必需的,因为预检请求始终是 OPTIONS,并且使用的方法与实际请求不同。

    6K20

    跟我一起探索 HTTP-HTTP缓存

    另一方面,如果 TLS 桥接代理通过在 PC 上安装来自组织管理的 CA 证书,以中间人方式解密所有通信,并执行访问控制等,则可以查看响应的内容并将其缓存。...在大多数情况下,你可以通过 Cache-Control 标头和你自己的配置文件或仪表板来控制缓存的行为。...你应该做的是,避免使用 kitchen-sink 标头,但请仔细阅读你正在使用的任何托管缓存机制的文档,并确保你选择的方式可以正确的控制缓存。...启发式缓存是在 Cache-Control 被广泛采用之前出现的一种解决方法,基本上所有响应都应明确指定 Cache-Control 标头。...如果服务器不想失去对 URL 的控制——例如,在资源被频繁更新的情况下——你应该添加 no-cache,以便服务器始终接收请求并发送预期的响应。

    61951

    【网络知识补习】❄️| 由浅入深了解HTTP(一)HTTP概述

    服务器不一定是一台机器,但可以在同一台机器上托管多个服务器软件实例。使用 HTTP/1.1 和Host标头,它们甚至可能共享相同的 IP 地址。...HTTP 是可扩展的 HTTP/1.0 中引入的HTTP 标头使该协议易于扩展和试验。甚至可以通过客户端和服务器之间关于新标头语义的简单协议来引入新功能。...使用标头可扩展性,HTTP Cookie 被添加到工作流中,允许在每个 HTTP 请求上创建会话以共享相同的上下文或相同的状态。...以下是可通过 HTTP 控制的常见功能列表。 缓存 如何缓存文档可以由 HTTP 控制。服务器可以指示代理和客户端缓存什么以及缓存多长时间。客户端可以指示中间缓存代理忽略存储的文档。...HTTP标头,就像请求的标头一样。 可选地,包含获取的资源的正文。 ---- ????️‍????

    91720

    在Spring Boot中实现HTTP缓存

    在本文中,您将学习如何使用内置的HTTP响应缓存机制来实现缓存SpringBoot控制器的结果。 1.如何以及何时使用HTTP响应缓存? 您可以在应用程序的多个层上进行缓存。...HTTP协议定义了几个请求和响应标头,您可以使用它们来控制客户端何时清除缓存。 选择适当的HTTP标头取决于您要优化的特定情况。...为了设置在Spring的控制器中的HTTP标头,就要在RESTContoller用ResponseEntity包装类。...客户端根据Last-Modified标头的值设置其值,该标头是与此特定资源的先前响应一起发送的。...您了解到客户端缓存验证是最有效的方法,因为不涉及数据传输。在适用时,您应该始终支持客户端缓存验证。 我们还讨论了服务器端验证并比较了Last-Modified和ETag标头。

    6K50

    如何在CentOS 7上配置Apache内容缓存

    在本教程中,我们将讨论如何使用各种缓存模块在CentOS 7上配置Apache 2.4。...在验证期间为资源设置缓存锁定会告知Apache当前正在刷新资源。在此期间,可以使用指示其状态的警告标头来提供过时资源。我们将在/tmp文件夹中设置缓存锁定目录。我们将允许锁定最多5秒钟才能被视为有效。...这些示例直接来自Apache的文档,因此它们应该适用于我们的目的。 我们还将告诉Apache忽略Set-Cookie标头而不将它们存储在缓存中。...这样做可以防止Apache意外地将用户特定的cookie泄露给其他方。该Set-Cookie标头被缓存之前将被剥离。...但是,我们所服务的内容实际上并不具备进行智能缓存决策所需的Expires或Cache-Control标头。要设置这些标头,我们需要利用更多的模块。

    2.3K00

    反向代理的攻击面 (下)

    Apache从ProxyPass“解析”提取主机值,因此我们可以发送类似GET @evil.com HTTP/1.1的请求,Apache将其视为http://backend_server@evil.com...滥用标头修改功能 对于反向代理服务器来说,增添,删除和修改后端请求中的标头是一项基本功能。有些情况在,这比修改后端本身简单的多。有时,反向代理会添加一些重要的安全标头。...在大部分情况下,如果web应用的某个脚本使用了session功能,那么该应用会严格设置Cache-control标头的缓存功能,因此如遇到这种情况,开发者不需要考虑(安全)。...在一种情况下(后端严格限制,完全不允许缓存),管理员没有修改后端,而是修改反向代理规则,修改严格的Cache-control标头从而开启了缓存响应。这时,管理员一般都会错误设置。...这个web应用上的/account/attacker有一处self-XSS漏洞(只在攻击者自己的账户上触发)。Nuster配置了缓存web应用上/img/目录的所有响应。

    1.9K40

    你还在为 HTTP 的这些概念头疼吗?

    HTTP 通用标头主要用于传达有关消息本身的信息,而不是它所携带的内容。它们提供一般信息并控制如何处理和处理消息。...尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。...因为计算机网络中是可以有第三者出现的,也就是缓存服务器,这个指令通过影响请求/响应中的缓存服务器从而达到控制缓存的目的;不仅有缓存服务器,还有浏览器内部缓存也会影响链路的缓存。...HTTP 日期始终以格林尼治标准时间表示,而不是本地时间。...例如下面这种写法 Server: Apache/2.4.1 (Unix) Vary Vary HTTP 响应标头确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求一个新的响应。

    2.6K30

    「HTTP标头」都给你整理好了

    HTTP 通用标头主要用于传达有关消息本身的信息,而不是它所携带的内容。它们提供一般信息并控制如何处理和处理消息。...尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。...因为计算机网络中是可以有第三者出现的,也就是缓存服务器,这个指令通过影响请求/响应中的缓存服务器从而达到控制缓存的目的;不仅有缓存服务器,还有浏览器内部缓存也会影响链路的缓存。...HTTP 日期始终以格林尼治标准时间表示,而不是本地时间。...例如下面这种写法 Server: Apache/2.4.1 (Unix) Vary Vary HTTP 响应标头确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求一个新的响应。

    6.4K41

    深入了解加快网站加载时间的 JavaScript 优化技术

    当用户重新访问你的站点时,浏览器可以从缓存中加载这些资源,而不是再次下载它们,从而加快加载时间并减少服务器负载。 通过配置你的服务器以提供适当的缓存标头,你可以控制缓存哪些资源以及缓存多长时间。...02)、缓存控制和 ETag 标头 用于控制浏览器缓存的两个重要标头是 Cache-Control 和 ETag。...Cache-Control 标头允许你设置缓存指令,例如缓存中资源的最长期限或是否应重新验证。...此机制有助于确保浏览器始终拥有最新版本的资源。 03)、在服务器端配置缓存 要启用浏览器缓存,你需要将服务器配置为为你的资源提供适当的标头。此过程因你的服务器软件而异。...例如,在 Apache 服务器中,您可以使用 .htaccess 文件来设置缓存标头: 此配置为 CSS、JS、JPG 和 PNG 文件设置 Cache-Control 标头,允许它们缓存 24 小时。

    73130

    聊一聊关于加快网站加载时间相关的 JS 优化技术

    当用户重新访问你的站点时,浏览器可以从缓存中加载这些资源,而不是再次下载它们,从而加快加载时间并减少服务器负载。 通过配置你的服务器以提供适当的缓存标头,你可以控制缓存哪些资源以及缓存多长时间。...02)、缓存控制和 ETag 标头 用于控制浏览器缓存的两个重要标头是 Cache-Control 和 ETag。...Cache-Control 标头允许你设置缓存指令,例如缓存中资源的最长期限或是否应重新验证。...此机制有助于确保浏览器始终拥有最新版本的资源。 03)、在服务器端配置缓存 要启用浏览器缓存,你需要将服务器配置为为你的资源提供适当的标头。此过程因你的服务器软件而异。...例如,在 Apache 服务器中,您可以使用 .htaccess 文件来设置缓存标头: 此配置为 CSS、JS、JPG 和 PNG 文件设置 Cache-Control 标头,允许它们缓存 24 小时。

    81020

    网页性能优化浅谈与实践

    通常 cache-control 被认为是一种比 expires(到期) 更现代,更灵活的方法,但是两个标头可以同时使用。 Q: 如何进行缓存?...答: 通过标识资源或资源类型(例如图像或CSS文件),然后使用所需的缓存选项指定资源的标头,来启用缓存。...比如服务器的资源更新了,客户端需要及时刷新缓存;又或者客户端的资源过了有效期,但服务器上的资源还是旧的,此时并不需要重新发送。...使用更新且更灵活的高速缓存控制标头expires标头通常用作备用。 Tips : Pragma 是旧产物,已经逐步抛弃,有些网站为了向下兼容还保留了这两个字段。...即优先级从高到低是 Pragma -> Cache-Control -> Expires; 基础示例: # Apache 的 .htaccess 配置缓存控制头和到期资源 <filesMatch

    73720

    Request Smuggling Via HTTP2 Cleartext

    h2c升级,并且不应转发HTTP2设置标头(RFC 7540第3.2.1节) 阅读说明书后,我提出了三个问题: 如果边缘代理正在执行TLS终止并且我在HTTP消息中发送h2c升级请求,后端服务器如何知道我们正在尝试通过...上使用TLS终止,在/endpoint上使用类似WebSocket的proxy_pass连接到支持h2c升级的后端服务,我还为NGINX服务器配置了访问控制,该访问控制阻止了对/flag端点的所有请求,.../标志的附加请求 不再监视TCP隧道中的通信的代理将请求转发到后端服务器 服务器使用标志进行响应 如上所示,我们成功绕过了代理的访问控制来访问私有端点(在这里试用该工具和Docker演示) 根据规范,代理将始终期望通过...要使h2c走私成功需要将Upgrade标头(有时还有Connection标头)从边缘服务器成功转发到支持h2c升级的后端服务器,此配置可以发生在任何反向代理、WAF或负载平衡器上 默认情况下以下服务会在代理传递期间转发...Upgrade和Connection标头,从而实现h2c的开箱即用: HAProxy Traefik Nuster 默认情况下,这些服务在代理传递过程中不会转发升级和连接标头,但可以以不安全的方式进行配置

    1.3K10
    领券