如何修复iOS 8中的图像交换问题与保持活动+ HTTPpipe道系统?

自iOS8以来,我pipe理的网站正在经历一个间歇性的问题,即图像与其他图像交换位置。 这在很多地方都有提到,但没有明显的解决办法:

https://discussions.apple.com/thread/6574663

http://tech.vg.no/2011/12/14/safari-on-ios-5-randomly-switches-images/

http://tech.vg.no/2012/02/01/safari-on-ios-5-randomly-switches-images-part-3/

它在过去看来是iOS5的一个问题。 我们的服务器正在运行Lightspeedpipe道和保持活动。 我的服务器pipe理员已确认pipe道正在按请求的顺序返回资产。 他提到禁用保持活力可能会解决问题,但会大量增加服务器负载,这将是一件非常糟糕的事情。

我的所有资产都正确地传递了内容长度。

现在我真的处于死胡同了,为了解决这个问题。 由于我的许多用户使用iOS,所以每个人都开始非常沮丧。

它只是在引入iOS8的时候才出现的,它对Safari有一些相当大的改变。 在每个释放8,问题仍然存在。 正如我所说,这是间歇性的,我们的用户开始责怪我们“没有其他网站有问题”。

我想知道是否有人可以点亮这个? 有没有其他人遇到这个问题和/或find一个解决scheme?

这是一个链接到我的网站的问题: http : //bit.ly/1Ej6Xx7

    我们也有这个问题,我们的解决scheme是删除我们的HTML中的所有标签,并使用具有背景属性的CSS类。 这是一个例子:

    .img_logo { background: url(../images/logo.png?v=20150427) no-repeat; width: 175px; height: 49px; display: block; } 

    我知道,感觉有些尴尬,但这是解决我们这个问题的唯一方法。 一个缺点是,我们不得不删除图像的“ALT”,但我想你可以解决这个问题,如果有必要的话。

    希望这可以帮助!

    我在刚刚发布的一个新网站上处理这个问题。 在FF / Opera / Chrome等一切看起来不错,但我有iOS8 +中的主要图像交换问题。 我注意到很多报告这个问题的网站运行Litespeed webserver。 我切换到Apache一会儿testing,果然,网站加载得很好。 我的主机(wiredtree.com,优秀的服务),我看了一下Litespeed的一些configuration选项,并禁用了这两个选项:

    • 启用压缩
    • 启用dynamic压缩

    禁用这两个后,网站加载起来没有问题的罚款。 performance非常轻微,但绝对值得。

    起初,我们试图禁用保持活动状态来有效地禁用HTTPpipe道传输,但是并没有解决问题。 以上是我见过的唯一提供真正解决scheme的东西。

    希望这可以帮助处理相同问题的人!

    不是一个答案,而是一个解决问题的方法:

    1. 使用生产中的Web服务器,使用开发版本的应用程序自行重现问题。 只要确保你覆盖。
    2. 在Web服务器上创build一个新的主机名/ CNAME条目和相应的虚拟主机,或者如果第3步需要,在单独的端口上创build一个单独的HTTP服务器。 这就是所谓的“testingHTTP服务器”
    3. 将您的testing/开发版本指向这个新的HTTP服务器,并重现问题。 不要去第4步,直到你能做到这一点!
    4. 现在,在这个testingHTTP服务器上,无论是通过redirect还是智能configuration(尽可能使用Apache),都可以禁用Keepalive,压缩,https,caching,stream水线等任何你能想到的事情。 重现问题并记下所有这样做的configuration元组和那些没有的configuration元组。
    5. 与Apahce交换Litespeed服务器。 再一次,对于一个好的系统pipe理员来说,这应该是相当微不足道的。 ( ahem )。 重现问题。

    如果您可以通过步骤5一直重现问题,并且没有一组configuration更改或服务器软件更改造成差异,则问题是iOS,可能无法执行任何操作。 (但这不太可能)

    但是,如果有一组configuration更改依赖于Litespeed(即,也出现在Apache中),那么我们可以做一个解决方法:使用BrowserMatch指令来检测特定(一组)浏览器; 为此设置的BrowserMatch设置configuration参数。 你会发现这种事情的例子可以追溯到IE 3.0和Netscape浏览器。

    如果问题变成Litespeed,请使用上述方法,并提供Litespeed支持的错误。 你在为支持付钱,不是吗?

    使用http / 2协议似乎已经解决了我的情况下的问题。 但是,我确定可能有一个实际的解决scheme/解决这个问题。