修复Firefox加载youtube视频缓慢的问题——请不要随意启用pipelining!

大概几个月前起,我就一直遇到Youtube视频无法正常快速加载的问题。详细说来,就是打开一个Youtube视频(包括站外内嵌视频)时,有很大概率(>20%)视频无法立刻加载,而是要间隔10几秒甚至更长时间之后才会开始播放,甚至直接显示“遇到错误”。如果F5,一般可以解决。一开始我没把这当回事,以为只是临时性的网络不畅。但是随着时间的流逝,我发现此问题不但没有自行解决反而越来越严重了。尤其是在站外引用的情况下,F5整个页面也不现实(比如在feedly里,reddit中)。

无标题

图中可见莫名10秒的load间隔。

今天我终于下决心要解决这个问题。我一直以来都以为这是由youtube center这个脚本导致的——原因很明显,因为只有他专门对youtube进行修改嘛。在其github上搜了一圈,发现没人提过类似的问题,这让我稍显疑惑——毕竟youtube center的用户还是很多的。在新profile上安装了youtube center并且加载我的设置之后,发现果然无法重现这个问题。看来这次的毛病不是那么简单了。

关于排查Firefox的问题,主要应该分为以下几个步骤。

1. 排除是否是Firefox独有问题——否则如果是因为网站本身写的屎导致的,你调试一万年也没解。解决方法自然就是用Chrome和IE测试咯。当然有些问题,比如baidu的v.gif问题——即使你知道是Firefox独有你也没办法。如果是Firefox独有问题:

2. 排除是否是当前profile的问题——新建Profile。在这里强烈推荐一个神级扩展——Profilist。可以在不关闭当年Firefox的情况下重开一个使用其他profile的Firefox,而且完美契合29+的新UI。如果是当前profile独有问题:

3. 排除是否是Cookie或者扩展的问题——分别用隐私窗口以及安全模式(-safe-mode)测试。一般而言,和cookie有关的概率比较低,如果发生了就清理一下cookie就好。如果是扩展的问题,那么进一步用2分法找出问题扩展。记住,很多扩展自带的的“停用”功能并不能彻底消除其造成的BUG,保险起见请使用Firefox插件管理本身的“禁用”。如果问题依然可以重现:

5. 备份后逐步删除profile中的文件,看何时问题会修复。一般而言先从pref.js下手。如果确定问题是pref.js,再打开这文件一项项地扣罢…

顺便一提,对于这种无法“必然”重现的问题,最好设定一种方案来检测。比如我是自行设定“连开15个视频,看是否出现无法立刻读取”的方法来代表“能否复现”。

经过前4个步骤,我发现我的问题出现在我的profile中——但是和任何扩展都没有关系——因为安全模式也能重现。另外一个我怀疑的重点——adblock plus,也成功在新profile证明无关。因此,在接下来的测试中我都保持仅使用adblock plus的状态,因为如果不用adp每次开视频前面的广告太tm烦了。

删掉pref.js之后问题消失,那么来源就很明显了。打开pref.js之后虽然有高达几百项,但是其中extensions相关的可以忽略。我很快就发现和这个问题可能有关的几条——network:

user_pref(“network.cookie.prefsMigrated”, true);
user_pref(“network.dns.disablePrefetch”, true);
user_pref(“network.http.pipelining”, true);
user_pref(“network.http.pipelining.ssl”, true);
user_pref(“network.http.proxy.pipelining”, true);
user_pref(“network.proxy.autoconfig_url”, “resource://jid1-zv8ehywtdnutwq-at-jetpack/unblock-youku/data/proxy.pac”);
user_pref(“network.proxy.socks_version”, 4);

其中重点是pipelining那几条。我猛然想起,大概半年前根据卡饭的一个“优化”帖,曾经修改过这几个参数。删掉之后,问题立刻解决。

这已经不是我第一次在这种问题上吃亏了。我自认不算是“不求甚解”的人,但是这种模糊的“会提升性能”的说法总是非常有吸引力。而且我也曾在英文网站中搜索过一番,关于pipelining的说法基本也是以正面为主——虽然事实上我开启pipelining之后并没有感觉到什么区别——也没有变快,也没有变慢。如果没有这次的事情发生,我可能一直就这么保持他开着了。不过看来,default is default for a reason.. 身为一个“默认设置”强迫症,此刻感觉头顶青天!

外一则

之前我的Firefox一直有附加组件管理界面顿卡、每次禁用组件后UI不会立刻变化等各种BUG。前一段病症加重,直接变成了无法禁用组件(每次禁用组件后,Firefox.exe进程无法正常退出)。把所有的组件重装一遍之后虽然解决了,但是UI顿卡和刷新不及时依然存在。最后把同步功能关闭之后就好了……firefox sync你(依然)好嘢!看来果然不该对29的新同步系统抱有任何期待(顺便一提,我用新Profile测试同步,扩展根本同步不过来好吗!)。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s