图片无法加载,net :: ERR_CONTENT_LENGTH_MISMATCH

时间:2015-07-11 19:42:44

标签: php mysql wordpress .htaccess google-chrome

问题

当您在我的网站上加载页面时,通常会出现一个(或几个)图像(我从Lightroom和/或Photoshop保存的jpg文件)。它看起来像一个断开的链接(出现ALT描述)但没有图像。浏览器的重新加载解决了问题(例如,在重新加载后所有图像都正确加载)。

错误消息

Chrome会显示" ERR_CONTENT_LENGTH_MISMATCH"警告所有未加载的图像。 (有时图像会在看起来像死图像之前快速闪烁)

设置

在共享主机上运行最新版本的Wordpress(4.2.2)。如果重要,网站是SSL(https)。图像位于主机上的图像上传文件夹(没有像Imagemagick等复杂的文件夹)中。

我的疑难解答

我在各种机器(包括Mac和PC)以及各种浏览器(Chrome和Safari)中使用各种ISP从多个位置复制了该问题,其中一些浏览器没有使用任何广告拦截器。

我尝试的是以下内容:

  • 我问主机服务器端是否存在问题。他们声称没有。
  • 我尝试重置functions.php文件。没有影响。
  • 我已禁用所有插件。没有影响。
  • 我在元字符集中以UTF-8硬键。没有影响。
  • 检查我是否使用Gzip。我不是。
  • 启用Wordpress缓存插件。没有影响。
  • 清除.htaccess所有非必要的重定向&命令。没有 影响。
  • 从全新安装中替换了wp-admin和wp-includes文件夹。没有 影响。
  • 删除了Wordpress&从备份重新安装。没有骰子。
  • 我已将具有此问题的网页的源代码放入test.html文件中,图片看起来很好。

我的想法&问题

图像每张100-200kb,有时页面上有相当数量的图像。有什么东西超时,然后一旦我重新加载,一切都显示,因为超时没有被绊倒?这是我可以在不完全理解问题的情况下收集的最佳随机猜测。

我能尝试的任何想法吗?我应该删除整个数据库并重新开始吗?我所知道的关于计算机的一切都是自学成才,服务器问题对我来说不是一个重点。即使你不知道它可能是什么,有人可以解释一下内容长度不匹配的含义吗?

非常感谢!

3 个答案:

答案 0 :(得分:5)

当您从Web服务器请求数据时,它首先响应数据(HTTP标头)和然后的数据信息。其中一条信息(HTTP标头)称为Content-Length。它告诉客户端应该从服务器接收多少数据。当您的浏览器获得图像时,服务器的响应(非常简化)(

Content-Length: 100000

< the image, 100000 bytes of data >

当客户收到Content-Length告知的数据量时,客户端知道请求已完成。直到它在这种情况下接收100KB(100000字节),它才认为图像例如没有加载。

如果服务器在客户端从服务器接收数据之前中断请求,或者客户端收到的数据多于收到的数据,客户端将抛出某种错误并假设数据为被破坏/无法使用并处置它。处理方式因浏览器而异。

您是如何将图片上传到您的网站的?我自己,我在文件的假定的大小存储在数据库中的情况下遇到了这个问题,这用于设置Content-Length标题。数据库中的文件大小不正确。 但是,我知道WordPress会在数据库中存储文件大小;媒体上传仅由网址表示。

如果Web服务器资源不足并且无法再满足您的请求,也可能发生这种情况;你说你每页有很多图像。如果您处于一个非常糟糕的共享主机方案,可能是主机强加限制,或者服务器根本无法处理它所托管的所有站点的流量。

答案 1 :(得分:0)

如果其他人遇到此问题,我想回过头来讨论这个问题。似乎在HTTPS和图像检索之间存在某种类型的故障导致了问题。虽然我不明白为什么会这样,但我将我的网站从SSL / HTTPS转换为简单的HTTP(我之所以能够这样做,因为它不需要加密),并且看起来所有图像都按照应有的方式加载。

如果有人理解&#34;为什么&#34;,我很乐意了解问题究竟是什么。幸运的是,我能够提出解决方法。所以,虽然这并没有回答我的问题,但它确实提供了导致问题的原因以及我的常识解决方法。

答案 2 :(得分:0)

您可能会在共享托管服务中看到此问题。免费带宽就像言论自由,而不是免费啤酒。在流量高峰期间调用资源中断策略。

分布式系统架构通过插入前端CDN层(例如CloudFlare)来解决这个问题。 CDN缓存您的静态资源,可以大大减少主机的负载。实际上,对于完全静态的站点,可以关闭主机。

与单独的共享主机相比,CDN还有其他优势,例如攻击检测,免费SSL(不是啤酒)以及整体改进的性能和安全性。

许多CDN都是免费的(如在演讲中)。你也可以升级到私人托管,但$和你仍然可能需要一个前端层。