首页 > 编程知识 正文

理解HTTP缓存和304状态码,error l104:multiple public

时间:2023-05-06 17:11:54 阅读:15473 作者:888

首次访问200

单击鼠标第二次访问(Cache ) )。

按F5更新304

按Ctrl F5强制更新200

如果客户端向服务端发送http请求,并且返回的状态代码为304 Not Modified,则表示此请求为条件请求。 请求标头有两个请求参数: If-Modified-Since和If-None-Match。

如果客户端缓存了目标资源,但不知道缓存资源是否为最新版本,则会发送有条件的请求。 发出条件请求后,客户端将向服务器提供If-Modified-Since请求标头。 此标头的值是服务器上一次返回到响应标头的最后修改的值,也是服务器上一次返回的ETag响应标头的值。

服务器读取这两个请求标头的值,以确定客户端缓存中的资源是否是最新的。 如果是,服务器将返回HTTP/304 Not Modified响应标头,但没有响应。 客户端收到304响应后,将从本地缓存中读取相应的资源。 因而,如果对访问资源发生304次访问,则实际上是先在本地缓存了访问的资源。

另一种情况是,如果服务器确定客户端缓存的资源已过期,服务器将返回HTTP/200 OK响应。 应答体是该资源当前的最新内容。 客户端收到200个响应后,用新的响应体复盖旧的缓存资源。 只有客户端缓存相应的资源,并且该资源的响应标头包含最后修改或ETag时,才能发送条件请求。 如果两个头都不存在,则必须无条件地请求资源,服务器也必须返回完整的资源数据。 此外,在调试浏览器时可能不希望本地缓存。 设定解除缓存即可。

如果选择no cache,则在请求资源时,请求标头中的Cache-Control为no-cache,如果指示不使用缓存,则会直接获取服务器资源。 另外,如果未选择no cache,则Cache-Control有两种情况。

1、max-age0的情况下直接从游览缓存提取2,max-age=0的情况下向服务器发送http请求,该资源是否有修改返回200,没有的情况下返回304。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。