Opera 12.01 RC build 1528

就这样 RC 了。大家如果遇到什么比起 12.00 有所倒退的问题,或者其他严重的 bug,请积极向桌面团队反馈,因为一不留神就要正式版了。

下载

更新日志

  • Localization updates
  • CORE-44428 documentedit ‘justifyfull’ on hidden element crashes
  • CORE-47339 Nested redirected call handling breaks Disqus
  • CORE-45094 Crash on loading svg altglyph testcase / rotate on altGlyph doesn’t work
  • CORE-40939 Crash when spatnaving to designMode iframe inside another iframe
  • CORE-45057 Crash: Incorrect upper bound used when JIT inlining String.fromCharCode()
  • CORE-45547 Redefining special properties using Object.defineProperty() breaks
  • CORE-43111 Calling iframe.documentContent.open() and then ifram.documentContent.getItems() causes a crash
  • CORE-45593 Freeze on gif file due to LzwStringTable circular reference
  • CORE-46780 Corrupt persistent storage file
  • CORE-47414 Secure connection: fatal error (50)
  • DSK-365353 Clicking search suggestion takes you to the wrong page
  • DSK-366279 Adress bar inline auto completion prefers shortest domain
  • DSK-370690 KDE file selector dialog freezes Opera
  • DSK-370710 Sending messages doesn’t increase counter of sent mails
  • DSK-367651 Opera minimizes when clicking the new tab button with a custom skin installed
  • DSK-369308 Mail layout changes on changing UI language

[ Via Opera Desktop TeamOpera.IM 编译 ]

Opera Dragonfly 稳定版更新: 查探函数返回值

(这是之前 Dragonfly 团队预告过的特性:《Opera Dragonfly 新特性预告:JS 代码格式化、显示函数返回值、UPnP》

调试程序时,知晓最后调用的函数的返回值通常很有用。如果返回值被指派给某个变量,这很容易检查,但是有时你会遇到这样的代码,它没有引用到返回值:

mul(add(1, 2), add(3, 4));

今天发布的稳定版本包含一个新特性,让调试这类型的代码变得更容易。一个函数步进结束后,其返回值会在 脚本/Script 标签侧边栏 >> 状态/State 标签 >> 返回值/Return Values 下伴随着其源函数一并显示。在这些返回值旁边有箭头,点击箭头会直接跳到其 return 声明,或者跳到调用此函数的那一行代码。

一行代码可以调用好几个函数,执行这行代码时会按顺序显示所有返回值,最近一次调用在顶部显示。

《设置 Opera Dragonfly 为离线版或实验版的方法》

[ Via Opera DragonflyOpera.IM 编译 ]

PopupFlash.js v1.1.4 更新

更新内容:

  • 修复在某些网站上的一些排版问题,如 Acfun、163 博客等。
  • 增加排除列表 BLACK_LIST_KEYWORD 设置。
  • 增加 Shift + 拖拽边缘微调功能。
  • 拖拽时在标题栏(标签)或状态域显示尺寸大小,设置项为 SHOW_RESIZE_INFO。
  • 修正以 iframe 方式插入视频时,弹出按钮不会消失的问题。
  • 其他一些小更新,主要内容为:修复浏览器窗口大小改变后的排版错乱问题,禁止在 wap 页面上加载该脚本。

详细介绍及下载请转至:用脚本放大 Flash 视频

另:
刚下了个 firefox 14 试了下这个脚本,效果不大好 = =。不同浏览器对 flash 的处理也不大一样,能正常使用这个脚本的浏览器似乎也就只有 Opera 了,所以这脚本不打算花太多时间去兼容其他浏览器,不便之处请谅解。

Opera 12.01 snapshot 1520

又一个新版,修复了一些问题。Opera 12.01 即将要发布正式版了,如果你在使用中遇到什么问题,请向桌面团队反馈

下载地址

更新日志

  • CORE-47195 Crash fix
  • CORE-46894 Can’t click Yahoo Chat contacts to open chat window (event.source for message event is the window where the thread started, not the window that called postMessage())
  • CORE-47137 Pages with “Cache-Control: no-cache, no-store” not possible to delete from history
  • CORE-47654 Loading incorrectly compressed resource with Dragonfly open crashes Opera
  • CORE-47621 Compile nested/chained comma expressions without recursion
  • DSK-369274 [Mac] Alipay plugin arrow keys enter as chars rather than moving as text cursor
  • DSK-336588 Opera doesn’t get updated browser.js for the new version of Opera immediately after autoupdating
  • DSK-370121 Clicking bookmark star crashes Opera

[ Via Opera Desktop TeamOpera.IM 编译 ]

Opera 12.01 snapshot 1517

Opera 12.01 继续修 bug。这个 build 也包含了最近一个 12.50 snapshot 对 HTML5 拖放的修复(没有在以下的更新日志中列出)。

这是一个开发版,不推荐普通用户使用,仅供测试。此版本存在着很多已知问题,可能会造成崩溃或者数据丢失,甚至无法正常使用。请勿覆盖之前的版本,并在备份数据后安装使用。

下载地址

更新日志

桌面版

  • DSK-370221 Feed title doesn’t use the whole width of the header field
  • DSK-353973 URL handling crash
  • DSK-368812 Leak on showing thumbnails
  • DSK-362561 “Crash log writing failed, couldn’t debug process” dialog shown after crashing Opera
  • DSK-361706 Pages fail to load after removing plugin wrapper
  • DSK-363575 [Win] Candidate box of Japanese IME is hidden under the address field drop down
  • DSK-357822 [Win] Non-ASCII fonts are displayed wrong when using letter spacing x64 on DirectX builds
  • DSK-366380 [Win] Blank page opening PDF files with Adobe Reader plugin
  • DSK-367748 [Win] Flash Player doesn’t display if Wacom tablet software is installed
  • DSK-361954 [Win] Crash on startup
  • DSK-363737 [Mac] Adobe PDF plugin which doesn’t work is picked up and used by Opera
  • DSK-368605 [Mac] Opera downloads EOT webfonts because the platform implementation claims to support this format
  • DSK-366185 [Mac] Crash on page load
  • DSK-367133 [Mac] Remove .torrent file association
  • DSK-365813 [*nix] Plugin wrapper zombie processes

核心

  • CORE-47615 __proto__ change discards own properties
  • CORE-47534 ATI driver crash
  • CORE-47560 Crash when opening content blocker on page
  • CORE-47261 Twitter is not loading (secure transaction error)
  • CORE-47209 SVG ‘filter’ access violation crash
  • CORE-43897 Crash when parsing SVG image
  • CORE-46093 Crash in XML parser when xlink:href in SVG is redirected back to the referring document
  • CORE-47208 DOM crash
  • CORE-46947 Crash on setting xhr.responseType in UNSENT state
  • CORE-43644 Crash when source ends with unclosed comment
  • CORE-45525 Crash when trying to draw SVG content into Canvas
  • CORE-40365 DOM crash
  • CORE-46986 Crash on Duolingo after scrolling
  • CORE-47056 input type=month returns incorrect value in its valueAsDate property on desktop
  • CORE-47219 Tuenti shows raw code
  • CORE-47088 Opera crashes at dataease.com
  • CORE-47533 Google Maps Labs popup broken (ES5 strict mode)
  • CORE-45295 JSON.stringify() failure on cached number conversion
  • CORE-45671 ES5 strict mode and #caller

[ Via Opera Desktop TeamOpera.IM 编译 ]

Opera 12.50 snapshot 1513: 改善拖放及硬件加速等等

这个 7 月,在奥斯陆高达 22°C 的最高气温下,Opera 总部照常不得不放暑假。桌面团队中很多人正在外云游,剩下的成员仍在继续改善我们的浏览器。今天的 snapshot 包含大量 bug 修复,包括对 HTML5 拖放(DND)和硬件加速(HWA)的改善(同时新增不少已知问题)。

测试硬件加速时记得开启 opera:config#UserPrefs|EnableHardwareAcceleration

已知问题

  • 无法复制只读的输入区域中的文本
  • 本应可改变尺寸的 UI 元素无法调整尺寸
  • 在窗口模式下的 Flash 元素中键入会得到不正确的输出结果或者没有输出结果
  • 数字键盘快捷键无法使用
  • 如果装有监听键盘事件的扩展,加载网页时同时使用快捷键会发生崩溃
  • [Win] 使用网页内嵌 Flash 播放器的全屏功能会引致 Opera 崩溃
  • [Mac] 对按键事件的处理尚有遗留问题
  • [Linux/FreeBSD] 快捷键不遵从键盘布局
这是一个开发版,不推荐普通用户使用,仅供测试。此版本存在着很多已知问题,可能会造成崩溃或者数据丢失,甚至无法正常使用。请勿覆盖之前的版本,并在备份数据后安装使用。

下载地址

注意: 从这个 snapshot 开始不再支持 Windows 2000。

更新日志

内核

  • CORE-47565 Uploading zip files results in file with size 0
  • CORE-46531 [HWA] Bringing blurred box shadows into view is very slow

桌面版

  • [HWA] Various text, painting and scroll performance fixes
  • DSK-361954 [HWA] Crash on startup for some users
  • DSK-363340 [HWA] CSS color:rgba(); does not work
  • DSK-361682 [HWA] If opera:config#UserPrefs|SpeedDialState = 0 the “Show Speed Dial” button is black
  • DSK-366314 [HTML5DND] Mouse gestures on tab fail when mouse leaves tab bar
  • DSK-365438 [HTML5DND] Drag and drop alert box not closed right away when clicking OK
  • DSK-359272 [HTML5DND] Drag and Drop in the page-bar should be re-nabled
  • DSK-368221 [HTML5DND] Can’t drag address field from customization dialog
  • DSK-367863 [HTML5DND] Can’t drag address field badge to Notes panel
  • DSK-366203 [HTML5DND] Dragging bookmark from panel to active tab opens new tab
  • DSK-365598 [HTML5DND] Dragging tab to web page no longer reloads
  • DSK-364252 [HTML5DND] Dragging file from OS to tab bar does not open it
  • DSK-360161 Opera does not support Chinese period separators in url
  • DSK-367844 It should not be possible to remove all search engines
  • DSK-347194 Crash on exit with address field in status bar
  • DSK-366483 The Temporary Download Directory path should be an absolute path in opera:config
  • DSK-182728 The setting of the temporary_downloads folder should set the parent folder
  • DSK-352379 Can’t save mail attachment with disk cache off
  • DSK-364889 Crash when accepting one of several Form Post Redirect dialog triggered by XMLHttpRequest to 307 Temporary Redirect content
  • DSK-364418 HTTPS and FTP proxies not shown as enabled in the proxy dialog
  • DSK-283100 Clicking a button URL twice makes Opera ask the user to add a button
  • DSK-367330 Opera 12 crashes every half of hour (when using proxy server of Windows 2008 server)
  • DSK-363738 Disable the popup menu on multi-click by default(hotclick menu)
  • Fixes for some known crash bugs
  • Fixed a minor memory leak

Windows

  • DSK-363863 [HWA] Extension popup shadow grows as I hover elements in the popup (DirectX)
  • DSK-369338 [HWA] opera:gpu doesn’t report VendorId and DeviceId under Vista
  • DSK-367355 [HWA] Crashes on some Nvidia cards
  • DSK-357822 [HWA] non-ascii fonts are displayed wrong when using letter spacing x64 on DirectX builds
  • DSK-362054 [HWA] Crash on startup for some users of 64 位 builds
  • DSK-341896 [HWA] Sometimes crashes on opening content blocker
  • DSK-365254 [HWA] Alt+Enter starts opera in full screen instead of showing the info dialog
  • DSK-366095 [HWA] Themes are broken under DirectX
  • DSK-365941 [HTML5DND] Dragging and dropping page link to open it in new/background tab is not working
  • DSK-366809 [HTML5DND] Dragging bookmarks to text field opens bookmark
  • DSK-358890 [HTML5DND] Drag and drop with Alt+Tab (no-drop cursor) does not work
  • DSK-367643 [HTML5DND] Dragging and dropping selected text containing links opens new tabs
  • DSK-365156 [HTML5DND] Drag and drop within address bar does not work
  • DSK-365590 [HTML5DND] Alt+Tab cancels drag
  • DSK-321313 Save mail attachment to download folder overwrites existing files
  • DSK-363575 Candidate box of Japanese IME is hidden under the address field drop down
  • DSK-354822 Opera crashes when trying to write to a read-only bookmarks file
  • Drop support for Windows 2000

Mac

  • DSK-369312 [HWA] Hardware acceleration enabled after “Minimal restart” option
  • DSK-365171 [HWA] Soft hyphen doesn’t appear when word is wrapped
  • DSK-364293 [HTML5DND] broken mouse handling when some modifiers are used
  • DSK-367109 [HTML5DND] Drag and Drop upload of file with space in file name fails
  • DSK-368282 Crash when choosing color with the native color picker
  • DSK-368605 Opera downloads Embedded OpenType web fonts but does not display them
  • DSK-367133 Remove .torrent file association
  • DSK-361171 Textarea with opacity and transparent background has no visible insertion cursor

Linux/FreeBSD

  • DSK-367278 [HTML5DND] Crash on dragging image to 2nd window
  • DSK-365756 [HTML5DND] Mouse gets stuck in drag mode
  • DSK-366458 [HTML5DND] After dragging tab from one window to another new tab is opened in wrong window
  • DSK-367109 [HTML5DND] Drag and Drop upload of file with space in filename fails
  • DSK-365813 Opera pluginwrapper “zombie” process under KDE
  • DSK-369716 Build information not added to generated crashlog file

[ Via Opera Desktop TeamOpera.IM 编译 ]

Opera Dragonfly 实验版: 在 DOM 视图中查探事件监听

最新实验版引入了在 DOM 视图中查探事件监听的能力。

因为以下这些新特性依赖于浏览器内核最近新增的功能,所以你必须用目前的最新 Opera Next (12.50) 才能体验。

现在的文档视图中,被绑定了事件监听器(event listener)的元素旁边会出现一个新图标 “ev”。在图标上悬停鼠标会打开一个悬浮提示,显示一系列 listener。

每个 listener 的类型在这个悬浮提示的标题中显示。下一行显示它是监听 起泡/bubble 还是 捕捉/capture 阶段。如果 listener 是以 addEventListener 注册,或者以 ‘on‘-event-type 定义,它的类型就是 ‘event target listener‘。如果是以标记属性的形式定义就是 ‘attribute listener‘。在其类型上悬停鼠标,会在工具提示中显示对应的 listener 的函数源代码。

在这个工具提示中可以直接设置断点。点击函数源代码工具提示的标题会切换到 脚本 标签页并在源文件中高亮显示对应函数。

每个 listener 悬浮提示的最后一行表明此 listener 在哪里注册。和刚才提到的类似,点击这行会切换到 脚本 标签页并在源文件中高亮显示对应代码。

为了补充 文档 视图的查探功能,还新增了一个 listener 侧边面板,显示所有当前活动 listener 的概览,以事件类型排序。每个事件类型可以展开显示所有与此类型对应的节点。

该面板提供已注册的 event listener 的静态快照,但是考虑到 event listener 可以频繁地被程序添加、修改或者移除,所以 listener 面板还提供一个 更新/update 按钮来刷新此快照视图。

另外,新增的 event listener 所用的函数源代码悬浮工具提示也为其他 JavaScript 源代码视图所用。这便于回溯对应函数并在其中设置断点。
这些新特性对于使用 JavaScript 的开发者应该是相当有用的新玩意。请积极向 Dragonfly 团队反馈和提出建议

《设置 Opera Dragonfly 为离线版或实验版的方法》

[ Via Opera DragonflyOpera.IM 编译 ]

Google 旗下 Blogger 停止支持 Opera,及一些反响

最近,Opera 用户在 Blogger 中编辑或者新建文章会出现如下提示:

  • Blogger 不再支持你正在使用的浏览器
  • Try Chrome

听说 Firefox 也会遇到。我没有开通 Blogger,不亲测。

然后,IrfanView(一个看图软件)的官方论坛表示:踹 Chrome

Via FavBrowser.com

Opera 12.50: 代号 Marlin / 旗鱼

12.01 还在 beta 中,12.50 就已经出现了。Opera 12.50 开发代号为 Marlin/旗鱼。之前还有个开发代号是 Swordfish/剑鱼。感谢 Opera,让我终于知道旗鱼剑鱼原来并不是一回事 =_= |||

12.5 的已知新特性尚未完工:Clipboard(剪贴板)API、支持部分 -webkit- 前缀 CSS 属性、重新设计键盘事件处理,和融合 Mac OS X 10.8 的通知中心。

Clipboard API 的事件有 copy、cut、paste,适用于 text/plain 和 text/html 内容。

Opera 键盘事件处理现在更新到 DOM Events Level 3,并做了各种调整以改善按键处理这方面的兼容性。可以看看 Ola 关于网页兼容性的评论

之前 Opera 已经提过,会把广泛使用的 -webkit- 前缀 CSS 属性的子集映射到它们的 -o- 对应相似属性上。支持的属性包括 -webkit-box-shadow, -webkit-transform, -webkit-transform-origin, -webkit-border-radius, -webkit-border-top-left-radius, -webkit-border-top-right-radius, -webkit-border-bottom-left-radius, -webkit-border-bottom-right-radius, -webkit-transition, -webkit-transition-delay, -webkit-transition-duration, -webkit-transition-property, and -webkit-transition-timing-function。然而,你不应该单独依赖 -webkit- 前缀!

Mac OS X 10.8 Mountain Lion 用户收到的提示会整合进系统 通知中心,而不再从 Growl 出现。旧版本系统用户依然通过 Growl 接收通知。首选项中也有提供选项。

已知问题

  • 如果装有监听键盘事件的扩展,加载网页时同时使用快捷键会发生崩溃
  • 部分快捷键不可用
  • 在 Mac 上,对按键事件的处理尚有遗留问题
这是一个开发版,不推荐普通用户使用,仅供测试。此版本存在着很多已知问题,可能会造成崩溃或者数据丢失,甚至无法正常使用。请勿覆盖之前的版本,并在备份数据后安装使用。

下载 Opera Next

关于 Mac 版本分发的注意事项: 从这个版本开始,64 位 Mac OS Opera Next 自动更新获取的文件仅含 64 位二进制,而不是通用二进制。

更新日志

桌面版

  • Integrate with OS X 10.8’s Notification Center
  • DSK-364433 Changes and fixes to master password

核心

  • Support Clipboard API
  • Support a set of -webkit- prefixed CSS properties
  • New keyboard events implementation
  • New DOM Ranges implementation
  • Many stability improvements
  • CORE-8560 Don’t let favicons delay document loading
  • CORE-43644 Crash if source document ends with unclosed comment
  • CORE-44583 Do not ignore scripts that take longer than 30 seconds to load
  • CORE-41304 Change generated document’s doctype to HTML5 variant
  • CORE-36588 Expose document.contentType
  • CORE-21597 Auto table-layout algorithm applies word-wrap property for minimum content width
  • CORE-31596 Fixed-layout table with percentual-width columns with total percentage exceeding 100 displayed wrong in Opera
  • CORE-44143 Height attribute on TD not ignored when set to 0
  • CORE-42981 inserAdjacentHTML doesn’ work for display:table body
  • CORE-44041 Slow scrolling on Google Mail
  • CORE-40077 getAttribute on namespaced attribute in XHR response can fail
  • CORE-41834 Percentage text-indent in shrink-to-fit container misbehaves
  • CORE-43350 Layout memory optimizations
  • CORE-44519 Crash while running CSS Animations when opening Dragonfly
  • CORE-39715 SVG background image can not show when the file has been invoked as foreground image
  • CORE-41226 -o-transition* drops the inherit value
  • CORE-44102 Incorrect SVG bbox on parent (group) when animating (SMIL/JS) transform of child
  • CORE-44582 registerProtocolHandler doesn’t have “mms” and “webcal” in whitelist
  • CORE-44705 Text element with text-overflow set to ellipsis is not correctly centered if text-anchor=”middle”
  • CORE-44568 XHR2: onloadstart event is invoked after onloadend event if abort is called immediately after send
  • CORE-43426 Setting outline shorthand to none does not prevent focus highlight
  • CORE-43988 Out of memory when assigning invalid radial gradients to list-style-image through the DOM
  • CORE-40477 SVG text-decoration doesn’t disappear when animated, or after hover/active/focus
  • CORE-43897 Crash when dividing by zero while parsing a SVG image
  • CORE-44910 Can not paste into textarea after focus was in iframe
  • CORE-45078 When dragging a selection from some editable element to the editable element in other document the wrong drop effect is used
  • CORE-45016 gb18030: 0x7F should become U+007F, not U+FFFD
  • CORE-45055 TABLE as child of HTML and no BODY in quirks mode gets a random color
  • CORE-45116 MENU and DIR had 40px margin-left instead of 40px padding-left.
  • CORE-45056 frames+[].filter.call just returns empty array
  • CORE-45054 postMessage, Object.getPrototypeOf issue
  • CORE-31502 Text doesn’t wrap in Hootsuite.com’s textarea
  • CORE-45134 Exclude elements with empty names & ids from a window’s named properties
  • CORE-43932 JavaScript URIs are no longer allowed to load framed content
  • CORE-44428 documentedit ‘justifyfull’ on hidden element crashes
  • CORE-45057 Incorrect upper bound used when JIT inlining String.fromCharCode()
  • CORE-40213 Delete private data does not always clean up cache
  • CORE-44753 Absolutely positioned inline-table becomes block, not table
  • CORE-44826 Transitioning background-color from transparent to color ends up with the wrong color value
  • CORE-44789 Accessor property behaviour with primitives is incorrect
  • CORE-44788 INPUT type=number snap-on-step behaviour
  • CORE-44737 transform-origin should reject value it doesn’t understand
  • CORE-44994 loading page when in print preview crashes browser
  • CORE-42405 Selected text is not copied after parts of selection has changed
  • CORE-44604 impactless input events should not be sent
  • CORE-42813 Discrete to-animation with keyTimes should change value at specified time
  • CORE-21153 opera:config spoof user-agent able to save invalid values
  • CORE-24352 Prevent accidentally scaling when scrolling on slow pages
  • CORE-43508 BASE element ignored in document.baseURI if file sent with non-xhtml + xml mime-type
  • CORE-43509 xml:base does not take precedence over BASE in document.baseURI
  • CORE-34528 recognizes colspan/rowspan attributes on all elements with display: table-cell
  • CORE-44659 `Syntax error: invalid character escape sequence` when using a \u200d valid JavaScript identifier
  • CORE-44650 Drag prevents keyboard shortcuts from working when focus is in an editable region
  • CORE-19324 Empty inline-table (with non-zero width/height) not displayed
  • CORE-44654 omitted MIME type in data URLs with charset parameter does not work
  • CORE-44916 Date.prototype.setXXX functions don’t evaluate all parameters
  • CORE-44914 Don’t add KeyboardEvent when initializing DOM constructors table
  • CORE-24962 Accesskeys assigned to element created by javascript do not work
  • CORE-45024 BUTTON doesn’t always get full focus when clicked
  • CORE-44992 Pasting text using keyboard shortcut works erratically
  • CORE-44985 The modifiers keys have no effect when dragging over the UI e.g. address bar
  • CORE-44931 body background overwritten by second body
  • CORE-5774 after send() is invoked a single readystatechange event is to be dispatched
  • CORE-26489 NodeList returned by querySelectorAll does not inherit from NodeList

[ Via Opera Desktop TeamOpera.IM 编译 ]

Opera 实验室版: 支持 SPDY 协议

多年来人们依赖 TCP 和 HTTP 协议的结合来处理数据通讯的请求和接收,并把相应产生的数据包传输到特定的地方。但是它们并不完美。相比于人们设计这些协议的时候,现在的网站已经变得庞大得多也复杂得多。HTTP 在网络延迟方面的问题尤其突出,因为:

  • 同一时间一个连接只能索取一个单一资源
  • 只有客户端能在 HTTP 协议下发起请求
  • 请求和响应头不经过压缩,体积可以变得相当大。另外,很多请求和响应头的传输是多余的
  • 经过 HTTP 传输的数据并不总是经过压缩

总之,目前的网络没有发挥出本应达到的速度,随着网站越来越庞大和复杂,这个问题将会显得越来越严重。为了缓解这个问题,Google Chromium 团队发展出一个新的网络协议,此协议可以减小延迟和加速网页载入。这就是 SPDY,Google 已经将其用于自家的大部分服务中(Twitter其他若干网站也已经在使用),使加载速度大大提升,如果你使用的浏览器支持 SPDY 的话。

好消息是 Opera 也已经努力实现对 SPDY 的支持,完成后 Opera 也可以利用 SPDY 提升性能。其他好处,包括对 Google 的服务、其他使用了 SPDY 的网站和应用的兼容性会有所改善,并允许开发者在 Opera 中测试自己的依赖 SPDY 的服务。

关于 SPDY 的更多信息

SPDY 并不完全取代 HTTP 和 TCP —— 它基于这些协议并拓展了它们。不过 SPDY 有很多优点,例如每个连接索取多个资源、更高效的连接管理和数据格式。

SPDY 不强制压缩数据,但是它要求用户代理 (User-agent) 必须支持 gzip 压缩。不管用户代理发送的 Accept-Encoding header 如何,服务器总会以 gzip 或者 deflate 对内容编码并发送。

目前网络上有两个版本的 SPDY 在部署并使用:spdy/2spdy/3。两者都可能被 Google 所有服务(使用加密连接)和 Twitter 使用(由客户端判断使用哪个版本)。这个判断是由 NPN 协议 在 SSL 握手期间决定。当然客户端也可以决定绕过 SSL 而使用普通 HTTP。

Google 准备好了一个 SPDY module for Apache 2.2,任何人可以在他们自己的基于 Apache 的服务器上部署和使用 SPDY 来构建网站和应用。

下载 Opera SPDY build

关于 Opera 对 SPDY 的支持现状的说明

Opera 目前对 SPDY 的实现支持 spdy/2 和 spdy/3 协议的所有特性,以下除外:

  • PUSH and HINT: 就我们所知,目前网络上没有部署和使用 PUSH and HINT,并且无法在 mod_spdy 中使用,所以我们决定目前不实现它,直到我们须要在其上测试一些东西,或者有更多实际用法的时候。
  • Alternate-Protocol header: Chrome 和 Firefox 都没有按照 SPDY 草案 2 所描述的方式实现它,而且 SPDY 草案 3 甚至没有再提过它,所以我们决定不支持。
  • Persisting SETTINGS values: 服务器可以要求客户端保留它所接收的部分连接设置。在此情况下,客户端应该记住这些设置,然后在将来所有连接中使用(用户也应该能按照自己的意愿清除这些设置)。这不是 SPDY 协议的重要特性,SPDY 没有它也运作良好,不过我们将来可能会实现它。

它有多快?

我们粗略构建了一个性能测试,在 Windows 上有 50 毫秒的延迟,测试结果显示,在网络层上 SPDY 对比普通 HTTPS 有 38.67% 的性能提升。一个很不错的开始。

Google 也有提供一些 SPDY 性能测试结果

如何知道 Opera 在使用 SPDY?

是否在使用 SPDY 协议对用户是完全隐形的。没有形如 spdy:// 的附加方案,也没有什么指示标识会说 “注意!该页面使用 SPDY!”。Firefox 和 Chrome 有相关标识扩展,等我们造出相关的必要 API 之后 Opera 也应该会有相应的扩展。

辨别 SPDY 网站的一个方法是看由 SPDY 加载的附加 header,Opera Dragonfly 就可以查询得到。spdy/2 附加 header 形如 method, scheme, url and version。spdy/3 附加 header 形如 :method, :scheme, :host, :path and :version

总结

SPDY 是相当有用的新协议,比起旧的 HTTP/HTTPS,它已经展示出显著的性能提升。请在原文下提交对 Opera 的实验性 SPDY 版本的反馈,或者用 bug wizard 提交 bug。

SPDY 的更多信息包括 Google 的性能测试结果,可以在 Chromium Team SPDY Whitepaper 找到。

[ Via Dev.OperaOpera.IM 编译 ]