几个浏览器坑爹案例小记

上次说好的什么问题都要document一下的,这次简述一下这两天被坑的经历。

Chrome

微软系的网站的自动login功能(也就是通过cookie)一直都做得稀烂。例如,如果你上Surface的网站,看右上角。有时候你会发现,虽然你明明已经是登录状态,但是那里会显示“sign in”而不是你的头像。如果点开,会发现在drop down menu里有你的账号……但是点了可能要重新输入一遍密码。这个只是稍有不便罢了,另外一个例子,也是我碰到的,就是这个微软App商店的例子。因为我的cookie记录里已经有关于微软的login信息了,所以当我试图打开这个网站的时候,他会用302重定向的方式先重定向到一个login“中间人”页面(域名是login.live.com的)然后再重新跳转回原界面。姑且不说这个用户体验是多么的糟糕,我遇到的问题是,那个跳转页面根本有问题:跳转到login.live.com之后,他似乎没能正确地读取我的登录信息,会再次跳转到下一个login.live.com的页面……如此迭代了4、5次之后,他终于放弃了治疗,直接给我返回一个纯白的页面(错误信息404)。

如果你在网上随便搜live.com blank page之类的,可以搜到无数的结果(虽然没有一个回复靠谱的,各种官腔)。不过,介于我在隐身模式以及别的浏览器没有这个问题,我想来肯定是清理一下cookie就OK了。可是很不幸地,我手动清理了所有和微软相关域名下的cookie和其他本地信息后(通过Chrome自带的选项:chrome://settings/cookies),依然会遇到这个跳转问题。我怕是可能我漏了什么微软系的域名没清理,于是进而用该工具清理了所有本地信息,结果居然依然可以重现这个问题!只不过状况略有不同:打开上面那个app的网页会直接问你登录(注意:这里就很奇怪了,所以为什么看一个App的介绍网页需要强制登录啊?如果开个新profile或者隐身模式,明明是不需要的的,可以游客浏览),登录之后又重复上面的无限跳转循环。

最后,我发现只有彻底删除

AppData\Local\Google\Chrome\User Data\Default\Cookies

这个文件才能解决。当然,代价就是我会丢失所有的cookie了。另外一个吊诡之处在于,我之前用Chrome内建的清理功能删掉所有的cookie的时候,这个文件的大小居然是不变的(2M),不过这可能是单纯地数据库没有vacuum而已。

Firefox

Firefox这次遇到的问题其实说来比较简单,就是我闲着蛋疼用Nighly跑了一下我的主Profile之后,整个local storage的文件(webappsstore.sqlite)就嗝屁了,似乎进入了只读状态。导致大量奇怪的症状,诸如脚本数据丢失、甚至无法登录Firefox Sync等等。这问题应该仅仅是个例(比如说我非正常退出了之类的),之前我经常交替用不同版本的Firefox跑同一个profile,从没出过这类问题。我只好再次删掉了整个文件——之所以说再次,是因为我上次因为Firefox的性能问题已经删掉过一次了。

(翻了下前文发现这事儿没在blog里提过,这里顺便说一下。Firefox的webappsstore.sqlite的大小会严重影响Firefox的响应速度,尤其是诸如YouTube这种本身非常消耗资源、又大量使用local storage的网站。一般人的这个文件可能只有几百K到几M而已,我那用了快10年的老profile的这个文件居然有40M之巨。删掉之后,在YouTube的流畅度立刻上升一个等级。)

当然也不是没有代价的,很多网站、甚至插件、脚本的本地信息都存在这里面。不过一般而言还好这些信息都不是特别重要,只是不方便罢了。如果真的有非常在意的数据,可以先用sqlite browser之类的软件把信息提取出来备份一下。

相比之下,Chrome的架构就要好很多了,在 AppData\Local\Google\Chrome\User Data\Default\Local Storage 下每个网站的数据是分成单独的文件保存的,想删哪个点哪个。Firefox最近也正在进行对该文件结构的改造,在不久的将来应该也会分成多个文件来提升性能(具体怎么分,会不会也按照网站分就不清楚了)。

Firefox flash

得顺便黑一下Firefox上的Flash性能了。众所周知Firefox上的Flash性能一直不怎么样,但是我以前用台式机看个视频还是很流畅的。结果最近开始,看个Twitch上的区区720P 60 fps的视频居然就疯狂跳帧,有肉眼可见的不流畅。如果用我的5年前买的笔记本来看的话(还是核显,因为笔记本win10双显卡驱动不支持浏览器开启独立GPU,FML),性能就更可怕了:整个的帧率居然只有20fps,相比之下Chrome至少能跑到40fps(在表扬Chrome的同时,可以看到Flash这东西真的无法拯救了……)。

主要的因素根据Reddit网友的说法,Chrome(据说现在IE也是了)是用的自行开发的改版Flash player,而Firefox用的是官方提供的插件版,所以性能要差劲一些。另外一个例子是Opera,虽然内核和Chrome一样,但是因为没有用pepper flash(Chrome改版)而用了Adobe官方版,性能也很差。当然,Mozilla也在开发自己的Flash player——Shumway,但是Mozilla的效率你懂的,和Valve Time™差不多了。

对于Twtich,还好现在有个脚本可以调用HTML5播放器,用了它就连我的笔记本都能流畅播放60fps的直播了。当然这个脚本并不是很完善,有时候会有音画不同步或者视频加载不出来的问题,一般刷新就能解决。实在不行,还有Live Streamer的选择——但是我比较喜欢twitch网页的界面(尤其是看聊天)。台式机的话我还是继续用Chrome+Flash看了,反正性能绰绰有余。

顺便一提,Twitch现在的control(就是播放、音量按钮)已经是用HTML绘制的了,但是在Firefox上有个绘制的bug,会导致全屏播放模式下性能极差(高CPU占用,低FPS)。我记得有个样式表workaround但是暂时找不到地址了。

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