问题
当您在我的网站上加载页面时,通常会出现一个(或几个)图像(我从Lightroom和/或Photoshop保存的jpg文件)。它看起来像一个断开的链接(出现ALT描述)但没有图像。浏览器的重新加载解决了问题(例如,在重新加载后所有图像都正确加载)。
错误消息
Chrome会显示" ERR_CONTENT_LENGTH_MISMATCH"警告所有未加载的图像。 (有时图像会在看起来像死图像之前快速闪烁)
设置
在共享主机上运行最新版本的Wordpress(4.2.2)。如果重要,网站是SSL(https)。图像位于主机上的图像上传文件夹(没有像Imagemagick等复杂的文件夹)中。
我的疑难解答
我在各种机器(包括Mac和PC)以及各种浏览器(Chrome和Safari)中使用各种ISP从多个位置复制了该问题,其中一些浏览器没有使用任何广告拦截器。
我尝试的是以下内容:
我的想法&问题
图像每张100-200kb,有时页面上有相当数量的图像。有什么东西超时,然后一旦我重新加载,一切都显示,因为超时没有被绊倒?这是我可以在不完全理解问题的情况下收集的最佳随机猜测。
我能尝试的任何想法吗?我应该删除整个数据库并重新开始吗?我所知道的关于计算机的一切都是自学成才,服务器问题对我来说不是一个重点。即使你不知道它可能是什么,有人可以解释一下内容长度不匹配的含义吗?
非常感谢!
答案 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都是免费的(如在演讲中)。你也可以升级到私人托管,但$和你仍然可能需要一个前端层。