间歇性加载图像失败 - ERR_CONTENT_LENGTH_MISMATCH

时间:2015-06-13 15:25:42

标签: javascript php html content-length

问题

我的网站无法随机加载随机图片。 在控制台中使用以下错误加载图像的间歇性失败:

  

" GET example.com/image.jpg net :: ERR_CONTENT_LENGTH_MISMATCH"

图像要么根本不加载并且使用alt标记给出损坏的图像图标,要么中途加载并且其余部分被破坏(例如,颜色全部搞砸了,或者一半图像将变灰)。

设置

Litespeed服务器,PHP / mySQL网站,包含HTML,CSS,Javascript和JQuery。

重要提示

  • 所有主要网络浏览器都会出现问题 - 间歇性地和各种图像。
  • 我通过htaccess在所有页面上强制使用UTF-8编码和HTTPS。
  • 托管服务提供商声明所有权限都已正确设置。
  • 在我的访问日志中,当图片无法加载时,它会提供“200 OK”'响应图像并列出传输的字节为' 0' (零)。
  • 几乎总是无法加载的图片,但可能只有5%的时间是CSS文件或Javascript文件。
  • 将服务器从Apache移至Litespeed后立即出现问题,并且持续数周。
  • 启用Gzip和缓存。

4 个答案:

答案 0 :(得分:1)

此错误在HTTP标头中公布的数据与通过网络传输的数据之间存在明确的不匹配。

可能来自以下方面:

  1. 服务器:如果服务器存在某些模块的错误,这些模块会更改内容但不更新标题中的内容长度,或者只是无法正常工作。< / LI>
  2. 代理:您和您的服务器之间的任何代理都可能正在修改请求,而不是更新内容长度标头。
  3. 如果设置错误的内容类型,也会发生这种情况。

    据我所知,我还没有在IIS / apache / tomcat中看到这些问题,但主要是使用自定义编写的代码。 (在响应流上自己写图像)

    甚至可能是您的广告拦截器造成的。

    尝试禁用它或为图像来源的域添加例外。

答案 1 :(得分:0)

建议使用cURL将图像作为离散url访问,例如 php testCurlimg&gt; image.log 2&gt;&amp; 1 ,以确切了解服务器返回的内容。然后你可以移动级别来测试网页 php testCurlpg&gt; page.log 2&gt;&amp; 1 以查看混合数据的上下文

答案 2 :(得分:0)

我只是遇到了同样的pkg-config错误。我优化了图像并对其进行了修复。我使用ImageOptim进行了图像优化,但是我猜想任何图像优化工具都可以使用。

答案 3 :(得分:0)

今天,使用我在php中编写的代理从Apache 2.4检索图像以提供用于访问Couchdb后端的JWT身份验证网关时,出现了此问题。该代理使用php fsockopen,并且将fread()缓冲区设置为较低(30字节),因为我已经看到此值在其他人的工作中使用过,并且我从未想过要对其进行更改。在所有失败的JPG(JFIF)图像中,我发现原始图像与所提供图像之间的差异是一系列crlf,与读取缓冲区的大小匹配。增加了缓冲区的字节长度,问题不再存在。

简而言之,如果流式读取缓冲区中的图像完全充满了回车符和换行符,则数据将被截断。这也可能与Collin Krawll的帖子有关,为什么图像优化可以解决该问题。