我在这样的网站上有一些图像标签。
<img src="img.png"/>
当我尝试加载它们时,它们只加载了一半。当我在网络控制台中检查请求时,我看到响应是:
206部分内容
我用谷歌搜索了它,它说如果标题中设置了一个范围,它将是这样的。但是这些标题实际设置在哪里?以及如何避免这种情况并加载完整图像?
我在这样的网站上有一些图像标签。
<img src="img.png"/>
当我尝试加载它们时,它们只加载了一半。当我在网络控制台中检查请求时,我看到响应是:
206部分内容
我用谷歌搜索了它,它说如果标题中设置了一个范围,它将是这样的。但是这些标题实际设置在哪里?以及如何避免这种情况并加载完整图像?
从 user166390 对问题的回答为什么Firebug 在视频加载请求中显示“206 Partial Content”响应?
当客户端请求范围(例如“给我前 2MB 的视频数据”)时,可以从服务器发送此部分内容代码 (206 )。
以块的形式下载数据以避免获取未使用的资源是至关重要的。(我很少在线观看完整的视频。)查看对
Range
标头的传出请求。
由客户端进行另一个调用以获取其余数据(或下一位)。你不需要做任何事情,他们最终会得到完整的图像,即使它需要几个 http 调用。
首先:
HTTP206 Partial Content
成功状态响应代码表示请求已成功,并且正文包含请求的数据范围,如Range
请求标头中所述。
如果只有一个范围,Content-Type
则将整个响应的 the 设置为文档的类型,并Content-Range
提供 a。
如果返回多个范围,Content-Type
则设置为multipart/byteranges
,每个片段覆盖一个范围,Content-Range
并对其进行Content-Type
描述。
下一个:
在资源上设置的 HTTP 标头通常由 Web 服务器设置。但是,如果文件很大,例如视频文件,浏览器可以请求正在加载的资源块。通常HTTP 206
会从客户端发起的请求中返回一个标头。在 apache 中的资源上设置的标头设置mod_headers
在httpd.conf
. 查找以下行以查看是否打开了部分内容:
Header set Accept-Ranges bytes
本节控制 apache 设置的标头的行为,因此它将是一个很好的起点。
然而,可以通过多种不同的方式设置标题。例如,当使用 apache 时,您可以控制加载的图像,以便它们缓存。这可以使用[a2enmod module][2]
. 这将减少服务器上的负载。
从不同的子域加载字体时,我遇到了类似的问题。在我的情况下,由于跨域问题,我得到了 206,我只是通过将 .htaccess 文件放在我的根文件夹中来解决它:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>