fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2025-05-30
  • 发帖数18493
  • 经验4849枚
  • 威望5点
  • 贡献值4324点
  • 好评度1117点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
阅读:15145回复:39

Firefox 33.0 正式版用户特性介绍

楼主#
更多 发布于:2014-10-15 20:40
Firefox 33.0 是一个拥抱开放,为今后提高性能打下基础的版本,它支持旨在替代 H.264 的开放 OpenH264,还有为了今后多进程而必须的 OMTC 功能。接下来我会为大家一一简单介绍。

Firefox 33.0 正式版各平台各语言版本下载


一、支持免费开源的 OpenH264 编码器


Firefox 在以前版本中就已经支持了 H.264 格式编解码,但我们知道 H.264 不是开源的,需要交授权费,Firefox 是利用 win7 系统所带的 H.264 编码器来间接支持。而今次的 Openh264 是 Cisco 思科公司研发开源的 H.264 编码器 ,Firefox 现在也开始支持这个开源的 H.264 编码器,今后 Firefox 就无需任何费用就可以解码 H.264 格式音视频,无论是在桌面 Firefox,还是移动版,甚至是 Firefox OS 上。
注意:现在这个 OpenH264 还只是专门用于 WebRTC,暂时还不能取代 H.264 编码器用来编解码 H.264 格式音频和视频。

默认已经开启这项功能,其对应的 about:config 开关参数为:
media.peerconnection.video.h264_enabled
默认为 true



对 OpenH264 的更多介绍可以看看这篇英文文章:OpenH264 Now in Firefox


二、在 Windows 平台默认开启 OMTC

OMTC(Off Main Thread Compositing,非主线程内合成)的目的是改善浏览器响应速度,具体技术细节非常复杂,因为需要深入了解 Firefox 线程和绘制引擎的运作。老实说,作为一名普通用户,我完全不想去深入了解,所以我只能结合一些文章简单来说说 OMTC 是干什么的。

Firefox 的主线程需要处理很多事件,比如最重要的页面载入、图片的解码和绘制、CSS 动画的运行、JavaScript 代码的执行等等。但是因为各种原因,比如 JS 代码写的不好,图片太大等原因会导致主线程执行时间变长,给用户感受就是浏览器变慢变卡。这就需要将一部分次重要的工作脱离主线程,在第二线程中执行。

Firefox 所载入的页面会被分为几个层(Layer),比如网页内容、视频、背景、图片、动画等等,他们在呈现给用户之前会被组装为帧(Frame),这个过程就叫合成(Composition),OMTC 就是将一些合成过程脱离开主线程来执行,尤其是利用硬件加速功能来将图像的合成通过 GPU 来执行。这样主线程负担减轻了,自然浏览器性能就显著提高了。另外,它也是今后 Firefox 实现多进程的一个重要的前提和基础。

现在 OMTC 是默认开启的,对应的 about:config 开关是:
layers.offmainthreadcomposition.enabled
默认为 true
更多细节有兴趣的朋友可以查阅 Mozilla Wiki:OffMainThreadCompositing





三、地址栏更智能判断输入内容是网址还是搜索关键字

如果你在地址栏输入一个关键字,比如 10086,原本 Firefox 会认为你输入的是类似于 10086.com 的网址,结果发现没有这个网址,然后给你一个错误页面。但实际上你是输入它用来执行搜索,要的是对于 10086 这个关键字的搜索结果页面。除非你在 10086 前面加上 ?,如“?10086” 这样。

Firefox 33.0 的一个改进就是当你输入 10086 这样的内容,会首先显示 10086 搜索结果页面。
注意:这个功能不支持中文,也就是你地址栏输入中文,它不会询问你是否当成网址,而是直接认为是搜索关键字显示搜索结果页面。另外 10086.(注意有个点)也会认为是搜索关键字。





四、全新的浏览会话恢复方式

Session Restore(浏览会话恢复)是 Firefox 的一项重要的功能,它保证了你在因为各种原因关闭了 Firefox,下一次启动的时候仍能恢复关闭前所打开的标签页。以往的会话恢复使用的是 sessionstore.js 一个文件,缺点明显,例如断电、OS 崩溃,浏览器更新或重启导致 sessionstore.js 损坏或写入失败而丢失会话。
Firefox 33.0使用了新的会话恢复功能,目的是减少上述情况发生导致的潜在的会话数据丢失问题。

新的备份会话方式流程
1、在浏览网页的行为发生变化的时候,会将当前会话写入 recovery.js,同时生成一份 recovery.bak,这相当于第一次生成备份。
2、间隔15秒后,会再写入到 recovery.js,recovery.js 和 recovery.bak 文件里面的状态保持15秒的时间间隔。这样保证系统随时能获取到你最新的会话。
3、Firefox 关闭时,会将当前会话写入 sessionstore.js,下次启动时,将此次会话写入到 previous.js。这样保证如果浏览器崩溃了,你仍可以恢复到最近的 previous.js 里面的会话。
4、Firefox 每次更新版本以后,都将 sessionstore.js 复制一份并更名为 upgrade.js-xxx(xxx 是你的构建版本 id)。这尤其适合每天更新版本的 Nightly。
 
恢复过程
1、如果浏览器之前是正常关闭,那么就恢复 sessionstore.js 里面的内容。
2、如果浏览器崩溃或异常,那么就恢复 recovery.js 里面的内容,因为 recovery.js 内容在时间上最接近。
3、如果仍不行,那么就恢复 recovery.bak 里面的内容,因为这个文件内容仅差 recovery.js 的15秒。
4、再不行,那么就恢复 previous.js 里面的内容,那是再上一次正常关闭时候保留的会话。
5、最坏的情况,上面的所有文件都损坏,那么只好恢复上次更新版本时候备份的 upgrade.js 会话。

上面说了一大堆具体细节,有点让人头晕,总之就是传统的方式是备份在sessionstore.js,如果文件损坏,那就没救了,而新的方式增加了很多文件,提高了恢复的成功率。




五、about:home 和 about:newtab 中的搜索框会显示搜索建议

Firefox 31.0 开始在新标签页面中增加搜索框,Firefox 33.0 的这个搜索框,连同 about:home 的搜索框在输入关键字的时候都会主动显示搜索建议,这样除了不能修改搜索引擎以外,基本就和工具栏上的搜索栏有着相同的功能了。再说一下,这些个搜索框的搜索引擎是保持和搜索栏一致。



六、其他一些调整

1、改善 JavaScript 字符串操作方式,在部分网站具有节省内存占用的优化效果。相关阅读:Slimmer and faster JavaScript strings in Firefox
2、使用新的 CSP(Content Security Policy,内容安全策略)后端。(Bug 925004
3、退出隐私模式后剪贴板里面的内容不会自动清空,算是一个比较实用的改进。
4、使用通过 HTTPS 方式来连接到 HTTP 的代理服务器。(Bug 378637
5、在“页面信息”窗口中的“常规”版块中去掉了“显示该站点的安全信息”这个选项。
6、复制 javascript: 开头的网址到地址栏时候,地址栏会自动去除 javascript:  
7、标签栏最右侧的显示标签页列表的按钮上的右键菜单增加一个“撤销关闭标签页”选项。
8、about:support 会显示“重要的已锁定的首选项”,这指的是加入 user.js 的不会被修改的首选项。


以上是 Firefox 33.0 在用户使用方面的主要更新,其他涉及到开发者的更新,这里就不介绍了,感兴趣的朋友请看发行说明:
Firefox 33 发行说明(官网英文)
Firefox 33 发行说明(中文翻译)
Firefox More than meets your experience
softworm
小狐狸
小狐狸
  • UID40112
  • 注册日期2013-10-30
  • 最后登录2021-06-09
  • 发帖数15
  • 经验25枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
1楼#
发布于:2014-10-25 12:26
升级到33.0.1,发现12楼所说的问题有明显改善了

编辑:刚才又碰到了,看来还是没修复
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2025-05-30
  • 发帖数18493
  • 经验4849枚
  • 威望5点
  • 贡献值4324点
  • 好评度1117点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
2楼#
发布于:2014-10-20 15:39
第六大点其他一些细节调整下面增加第5~8个细节调整。
Firefox More than meets your experience
teredarguiterep
千年狐狸
千年狐狸
  • UID39204
  • 注册日期2012-12-20
  • 最后登录2018-06-10
  • 发帖数1028
  • 经验615枚
  • 威望4点
  • 贡献值288点
  • 好评度105点
  • 社区居民
  • 忠实会员
3楼#
发布于:2014-10-19 15:40
aaaa007cn:CN无所谓
只要对应代理地址就行
试了下,直接填ip都可以
重点还是要剥掉多个版本openssl默认配置都会自动附加上的X509v3 extensions
回到原帖
CN 即地址不对,火狐也会拒绝。
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
4楼#
发布于:2014-10-19 15:18
teredarguiterep:我也成功了。CN还是要确保正确的。
autoproxy稍微修改就可以了。
回到原帖
CN无所谓
只要对应代理地址就行
试了下,直接填ip都可以
重点还是要剥掉多个版本openssl默认配置都会自动附加上的X509v3 extensions
teredarguiterep
千年狐狸
千年狐狸
  • UID39204
  • 注册日期2012-12-20
  • 最后登录2018-06-10
  • 发帖数1028
  • 经验615枚
  • 威望4点
  • 贡献值288点
  • 好评度105点
  • 社区居民
  • 忠实会员
5楼#
发布于:2014-10-19 15:01
aaaa007cn:ok搞定

https://github.com/mozilla/node-janus/#self-signed-certificate
openssl req -x509 -nodes -days 365 -newkey rsa:2048...
回到原帖
我也成功了。CN还是要确保正确的。
autoproxy稍微修改就可以了。
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
6楼#
发布于:2014-10-19 13:44
teredarguiterep:火狐现在不允许根证书直接签名网页,需要像goagent那样为每个网站生成ssl证书。回到原帖
ok搞定

https://github.com/mozilla/node-janus/#self-signed-certificate
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out crt.pem

这样自签出来的证书在firefox中会提示
The certificate is not trusted because it is self-signed.
(Error code: mozilla_pkix_error_ca_cert_used_as_end_entity)

根据文档
https://developer.mozilla.org/en-US/docs/Mozilla/Security/x509_Certificates
MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY的解决方法是
Re-generate the end-entity certificate without the basic constraints extension

通过对比node-janus仓库中crt.pem和之前的自签crt.pem
发现自签的crt.pem多出了一个X509v3 extensions
来自默认配置openssl.cnf的x509_extensions = v3_ca
https://www.openssl.org/docs/apps/req.html
注释掉这个之后再用同样命令生成的自签证书就和仓库中的一样可以正常使用了
teredarguiterep
千年狐狸
千年狐狸
  • UID39204
  • 注册日期2012-12-20
  • 最后登录2018-06-10
  • 发帖数1028
  • 经验615枚
  • 威望4点
  • 贡献值288点
  • 好评度105点
  • 社区居民
  • 忠实会员
7楼#
发布于:2014-10-19 08:23
aaaa007cn:https://www.firefox.net.cn/read-49557-2#read_338790
之前也是折腾很久都没成功

尝试了一下 https://github.com/mozilla/node-janus/tree/de...
回到原帖
火狐现在不允许根证书直接签名网页,需要像goagent那样为每个网站生成ssl证书。
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
8楼#
发布于:2014-10-19 01:36
teredarguiterep:折腾半天没成功,火狐现在不允许根证书对网站签名。回到原帖
https://www.firefox.net.cn/read-49557-2#read_338790
之前也是折腾很久都没成功

尝试了一下 https://github.com/mozilla/node-janus/tree/develop/keys 这里的自签证书
在hosts中把gonzales.me73.com指向127.0.0.1
并在firefox中导入crt.pem
本地的node-spdyserver、node-janus总算是能连上了
看来还是自签证书的生成有问题
teredarguiterep
千年狐狸
千年狐狸
  • UID39204
  • 注册日期2012-12-20
  • 最后登录2018-06-10
  • 发帖数1028
  • 经验615枚
  • 威望4点
  • 贡献值288点
  • 好评度105点
  • 社区居民
  • 忠实会员
9楼#
发布于:2014-10-18 18:40
aaaa007cn:是
如果代理服务器软件支持浏览器和代理之间走https的话
通常会需要额外设置证书、私钥
比如 http://wiki.squid-cache.org/Features/HTTPS#Encrypted_browser-Squid_conne...
回到原帖
折腾半天没成功,火狐现在不允许根证书对网站签名。
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
10楼#
发布于:2014-10-18 16:22
大道有狐:谢谢你的详尽回答,我基本上明白整个过程了。有时间的时候我会自己抓一下包自己确认整个流程到底是怎么个情况。

我这里现实的情况是:同样用autoproxy+goagent http的方式,的确存在在33版本上总是无法顺利、完整地打开页面的情况...
回到原帖
作为对照
还可以测试一下直接使用goagent生成的pac
以及使用pcx的33.0fix1加上autoproxy、foxyproxy及直接pac的情况……
我不用goagent的
但是测试时
goagent的本地监听端口竟然接受了curl的https请求然后返回了和http同样的502error……
作为对比
privoxy就直接卡了curl的https握手请求
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
11楼#
发布于:2014-10-18 15:58
teredarguiterep:connecting to HTTP proxy over HTTPS 是否需要代理支持?回到原帖

如果代理服务器软件支持浏览器和代理之间走https的话
通常会需要额外设置证书、私钥
比如 http://wiki.squid-cache.org/Features/HTTPS#Encrypted_browser-Squid_connectionhttps://www.npmjs.org/package/spdyproxy
大道有狐
狐狸大王
狐狸大王
  • UID37815
  • 注册日期2011-11-19
  • 最后登录2021-05-07
  • 发帖数455
  • 经验270枚
  • 威望0点
  • 贡献值156点
  • 好评度33点
  • 社区居民
  • 忠实会员
12楼#
发布于:2014-10-18 15:53
aaaa007cn:从源码看
AutoProxy 0.4b2.2013051811是通过nsIProtocolProxyService.newProxyInfo来设置代理的
见chrome/content/proxy.js第62行

http://mx...
回到原帖
谢谢你的详尽回答,我基本上明白整个过程了。有时间的时候我会自己抓一下包自己确认整个流程到底是怎么个情况。

我这里现实的情况是:同样用autoproxy+goagent http的方式,的确存在在33版本上总是无法顺利、完整地打开页面的情况;而版本32下就非常顺畅。

稍后测试一下foxyproxy的在33下的表现如何。。。
至察不明 Lollipop-->Marshmallow
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
13楼#
发布于:2014-10-18 15:35
aaaa007cn:之前搜的时候有搜到
这个标了DUPLICATE of bug 1079484
其实janus就是个spdy代理
而spdy还是跑在https之上的
参见 http://www.oschina.net/question/12_117516
所...
回到原帖
是的 反正我也不懂这个
http://pcxfirefox.wordpress.com/
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
14楼#
发布于:2014-10-18 15:34
pcxfirefox:这里有讨论 https://bugzilla.mozilla.org/show_bug.cgi?id=1047485回到原帖
之前搜的时候有搜到
这个标了DUPLICATE of bug 1079484
其实janus就是个spdy代理
而spdy还是跑在https之上的
参见 http://www.oschina.net/question/12_117516
所以1079484是Page Stalls with proxying HTTPS over HTTPS
上一页
游客

返回顶部