嵌入文件上的 404 响应是什么样的

嵌入文件上的 404 响应是什么样的

假设网页中嵌入了一张图片,但是该图片不在服务器上,也找不到,服务器对该图片的请求返回 404 错误。

网页上不显示图像,不显示实际的 HTTP 响应主体。通常会显示“损坏的图像”图标。

我不知道这个问题的答案是否会根据服务器类型、操作系统或其他变量而变化......

服务器是否会为嵌入文件生成完整的 404 响应?
如果生成,浏览器是否会下载整个响应?

这个问题的灵感来自于我注意到一些大型 CDN 在其所在/favicon.ico位置有一个透明的 1x1 ico,而不是什么都没有。我的想法是,这个64B文件(在一种情况下)比 404 响应更小或需要的计算能力更少...

似乎没有任何 HTTP 标头字段能够表明资源已嵌入,并且如果出现 404 错误,则不需要正文。

答案1

服务器是否为嵌入文件生成完整的 404 响应?

是的。正如您所说,服务器不知道它是嵌入式文件还是独立请求。

如果是,浏览器会下载整个响应吗?

好吧,它会下载完整的 HTML 404 页面 - 但不会下载该 404 页面上的任何图像或其他相关资源。如果您打开开发人员工具,您将看到完整的 HTML 响应。

这个问题的灵感来自于我注意到一些大型 CDN 的 /favicon.ico 位置有一个透明的 1x1 ico,而不是什么都没有。我的想法是,这个 64B 文件(在一种情况下)比 404 响应更小或所需的计算能力更少……

我不太明白这一点。好吧,我知道一个像素的文件会比 404 小,但如果要努力创建一个小的 favicon.ico 文件,那么为什么不创建一个真正的文件呢?或者你是说他们创建了默认的 favicon.ico 文件,然后你可以替换它?好吧,我想这样做可能是值得的。

似乎没有任何 HTTP 标头字段能够表明资源已嵌入,并且如果出现 404 错误,则不需要正文。

正确。HTTPreferer标头可以指示请求是否来自某个页面,但您不知道这是因为它是作为页面加载的一部分被请求的,还是有人右键单击页面并要求将图像作为单独的请求来查看。

总的来说,我宁愿花更多时间修复 404 错误,也不愿担心优化 404 页面的大小。避免在 404 错误上浪费嵌入式资源的带宽的最简单方法是确保没有任何 404 错误!

此外,如上所述,只会下载 404 页面的 HTML,因此,除非您的 404 页面非常大,或者不压缩它(使用 gzip 或 brotli),否则它的大小应该非常小。

也许,正如您所说,如果您托管客户网站,则网站图标可能是此建议的例外,因为每个页面都会要求提供它(如果未找到并缓存),但对于您拥有和管理的网站,我不会担心这一点,原因如下。

相关内容