Hostwinds 博客


304状态代码:您需要知道的一切 特色图片

304状态代码:您需要知道的一切

通过:   /  一月 6, 2024


什么是304未修改的响应?

HTTP 304未修改的状态代码是一个重定向代码,表明自上次请求以来请求资源没有被更改。

简而言之,服务器告诉浏览器,自浏览器上次访问以来,其要求的页面/资源尚未更新/更改。因此,该浏览器无需重新降级和重新下载页面/资源,而该页面/资源需要时间并消耗带宽,而是可以显示浏览器可以显示存储在其缓存中的现有页面/资源。

304状态代码如何工作?

为了使服务器使用304状态代码响应,它需要知道存储在浏览器缓存中的资源是否是存储在其数据库中的同一版本。

这是其工作原理:

快取

当浏览器首次访问网页时,它要求网站的Web服务器存储的资源。

Web服务器使用200个OK HTTP代码对请求响应,并将资源发送给浏览器。该响应中包含在HTTP标头中,是Hash代码或ETAG(实体标签) - 唯一的标识符,通常是一系列数字,每当修改或更新网站/页面/资源时会更改。

除了缓存网页内容外,浏览器还记录了请求的时间/日期。

有条件的请求

在重新访问相同的网页后,浏览器会启动条件HTTP请求,告诉Web服务器,只有在某些条件下它从服务器数据库中收集网页资源,并将其发送给浏览器以便下载。

有两个用于条件请求的基本HTTP标头,每个标头都包含有关当前存储在浏览器缓存中的网页版本的信息:

"如果修改"包含浏览器上次请求网页的日期/时间。

"如果不匹配"包含ETAG(哈希代码)。

服务器响应

Web服务器将获取条件请求,并将HTTP标头信息与其数据库中的信息进行比较,返回200个OK或304未修改状态。

当在HTTP标头中找到" If-Modified-Since"时,Web服务器将比较网页在浏览器缓存的日期/时间时更新网页的日期/时间。

当在HTTP标头中找到"如果无匹配"时,Web服务器将查看网页在其数据库中是否匹配浏览器的缓存版本的WebPage的ETAG。

当两个标题都用于验证时,"如果不匹配"将优先于" IF修改"。

如果Web服务器信息与标题信息匹配,则Web服务器将使用304个未修改的HTTP代码响应,并告诉浏览器显示网页的缓存版本。如果信息不匹配,则服务器将检索更新的网页,并将其发送到浏览器,然后将其下载和缓存以获取未来的条件HTTP请求。

304响应代码很重要吗?

304 HTTP代码的值实际上取决于网站的大小。

对于大型网站(成千上万页),304响应代码可以帮助降低带宽的使用情况并提高站点速度,从而获得更好的用户体验。它还可以通过释放爬网预算并允许更快的索引来帮助SEO - 搜索引擎机器人通常不会重新发布他们所知道的没有更改的页面,从而使他们可以更快地找到和爬网更快。

较小的站点也可能受益于304 HTTP代码的缓存能力,但优势可以忽略不计。

也就是说,小站点可能会遇到过多的流量,快速消耗带宽,在这种情况下,304代码可能是有益的。但是,有更好的方法可以减轻此问题。

http 304状态代码不好吗?

304状态代码是通过避免冗余数据传输来优化Web性能和节省带宽的重要资产。

有些将其比喻为错误代码(4xx或5xx),但事实并非如此。这是浏览器(客户端)和服务器使用的重定向代码来通信和执行操作。

也就是说,在某些情况下,客户端和服务器之间的通信被中断或破坏。让我们将此问题称为"陈旧304"。

客户端

如果用户经常遇到304未修改的状态代码,则可能表明浏览器的问题是它无法正确执行条件的HTTP请求并下载更新的内容。

此问题通常源自连接到浏览器的外部来源,例如基于浏览器的应用程序中的损坏文件,最近下载的软件中的损坏文件以及病毒或恶意软件。

这些来源中的任何一个都可能破坏浏览器的缓存和/或影响浏览器与Web服务器通信的方式。

服务器端

陈旧的304可能是由于Web服务器的重定向设置的问题所致。

重定向设置是.htaccess文件系统中发现的指令,该指令使用3XX状态代码来控制网站上的Web流量的定向或重新路由。

配置不当的304个状态代码指令可能会导致陈旧的内容传递,服务器资源的使用效率低下,甚至导致浏览器兼容性问题。

修复陈旧304状态代码的5种方法

幸运的是,可以采取一些行动来解决甚至彻底避免陈旧的304。

清除浏览器缓存

最常见和有效的方法是删除所有浏览历史记录,cookie和任何其他缓存数据。

所有以前存储的网页均已删除,网站不再存储浏览器数据。当用户访问网站时,好像他们是第一次访问,现在有了该网站的新副本。

冲洗DNS缓存

DNS高速缓存以相同的方式存储数据,例如浏览器缓存,但在操作系统上。它也包含浏览数据,以及IP地址,主机名和资源记录。

附加存储的数据允许网页加载速度,因为浏览器不需要通过整个域名系统进程。

就像清除浏览器高速缓存一样,潮红DNS缓存基本上也可以重置网络冲浪体验,从而允许用户(浏览器)收集新鲜的缓存内容。

扫描病毒和恶意软件

感染恶意软件或病毒的浏览器损坏浏览器缓存文件并中断与Web服务器的通信。

对病毒和恶意软件进行扫描可以帮助识别和删除威胁,从而使浏览器可以恢复正常操作。

禁用/删除浏览器扩展

我们都喜欢一个很好的浏览器扩展程序,但是某些扩展程序可能包含损坏的文件,这些文件进入浏览器的缓存,从而影响HTTP标头与Web服务器的标题如何通信。

审查扩展名并将其禁用或删除它们可以帮助指出罪魁祸首。

审核.htaccess重定向说明

在服务器端,我们具有.htaccess。这是一个服务器配置文件,该文件在目录级别上控制网站的行为,包括如何处理304个状态代码。

查看文件中的重定向说明可能会显示Web服务器如何将304个状态代码传达给浏览器的问题。

结论

HTTP 304未修改的状态代码旨在帮助简化客户端(浏览器)和服务器之间的通信,并且在正常工作时确实有助于优化Web性能并保存带宽。

但是,如果未正确配置或被外部部队损坏,则304状态可能会造成陈旧的内容问题,从而影响用户体验和搜索引擎排名。

归根结底,我们有许多解决方案可以帮助解决或希望完全避免304状态法的负面影响。

请记住,HTTP 304状态代码不是错误。

快乐的主持人!

撰写者 Hostwinds  /  一月 6, 2024