北京 Velocity 性能大会第一天

HomeJournal北京 Velocity 性能大会第一天

北京时间23点00分,结束完一天的行程,终于歇下来做做做总结。一句话,充实而有收获的一天。

回归正题,今天听下来,也就大概 3 个大的主题:正常的网站性能优化、无线方向的网站性能实践和数据监控。

正常的网站性能优化,似乎这个主题里面没有听到新鲜的知识点和实践。感觉还是书中的那些知识,最终在自己的产品上的实践大同小异。这里推荐几本书,值得一读:

  • 《高性能JavaScript》
  • 《Web性能优化》
  • 《高性能网站建设进阶指南》
  • 《网站性能监测与优化》

恩,这基本选「O'REILLY」的还是挺不错。

最让我觉得不错的,就是无线方面性能优化的分享。因演讲内容、演讲者所在的公司不同等缘故,演讲的效果成度其实也是大有不同的。

简单来说,我就只听了《Taobao移动网页性能优化之路》和《Qzone touch性能优化实践》,感觉很不错。为了对我吸收的知识进行梳理,下面先理清几个概念。


应用缓存

HTML5 提供一种「应用缓存」机制,使得基于 web 的应用程序可以离线运行。 在处于离线状态时,即使用户点击刷新按钮,应用也能正常加载与工作。

使用起来应该很容易,如下:

  1. 在应用页面的<html>元素上添加manifast属性,入下列写法:

    <html manifest="example.manifest">
    ...
    </html>
    
  2. 在服务器中添加文件类型为text/cache-manifest的「声明」(不知道能不能这样叫)。

  3. 在 example.manifest 文件中,列出需要缓存的内容,以及其他版本信息,例如:
    CACHE MANIFEST
    # VERSION 0.1
    CACHE:
    index.html
    images/test.png
    js/main.js
    css/layout.css
    # 替代方案
    FALLBACK:
    /ajax/ ajax.html
    

使用了「应用缓存 manifest」,可以有下面好处:

  • 用户可以在离线情况下浏览网页内容
  • 由于把需要重新请求的内容缓存起来,所以速度变快了
  • 减轻服务器的负载

WebView

虽然我还没真正做过无线方面的一些应用。但可以这样来理解,WebView 就是 web 应用的一种方式。一般有两种方式开发 web 应用,一个是原生的 native,一个是嵌入 wap 版本的网页的 WebView。


理解上面的概念之后,下面是对今天这 2 个演讲的一些总结。

ie

Taobao移动网页性能优化之路

通过对客户端网速的检测、用户终端的像素渲染比例,来给予用户不同的展示方式和资源。主要有几个方面值得学习:

  • 为了解决多终端下显示样式一致,需要通过终端像素渲染比例来给予不同的资源。特别是图片。
  • 背景图片使用 base64 位字符串来代替请求链接。
  • css 和 js 内联,组件 combo 服务。
  • web 单页面和 app 化组件。
  • MIX 框架。

ie

Qzone touch性能优化实践

个人觉得,这场分享和最后的提问环节都很精彩。一下子填充了我脑子里的很多空白。

  • Qzone touch 的框架和模板选择及原因。
  • 缓存策略。
  • 使用 NodeJs 来组装模板并渲染出 HTML。
  • 拍照压缩上传的最佳实践。
  • JS 和 WebView 通讯的最佳实践。

简单总结

这两场下来,感觉在无线这个新的领域,这种探索和实践的精神真的值得学习。特别是 Qzone touch 团队,分享的最佳实践在我们的无线产品中都可以借鉴的。


对于数据这一块,下午去参加了《携程客户端网站性能及用户行为数据采集分享》,感触也蛮深的。

采集数据的一个丢失率的问题

对于一个页面,可能有几种情况:静态页面,表单页面,高交互页面,跳转页面等。而一套完整的用户行为监控方案,理论上应该包含这些页面的。而在这几类页面中,表单页面和跳转页面是很容易在「打点」的时候丢失数据。

特别是在跳转页面,假设去监控浏览器关闭再发送一个请求给服务器,这样的取得「打点」信息也是不靠谱的。浏览器是会阻止掉这样的请求的。

携程的这套数据采集方案,能把丢失率将到 2%,表示很想知道怎么做的。(恩,后续研究下)

数据展示

获取到这些用户行为数据之后,怎么样才能把我们需要的信息展示出来呢?恩,可以通过关键的几个条件来监控,例如 DomReady, pageLoad, 页面停留时间等。

也许听完这次携程的演讲,我心中已经有一个数据采集及错误警报的方案了,恩,不错的感觉。


直到现在,印象最深的,还是 Google 的 Doodle 上对 HTML5 的激情使用。恩,这里有所有的案例,先记下来,以后慢慢研究。

再发一个感叹,那些动画的 sprite 图片,前端固然 OK,但还要一个视觉!


好吧。很晚了。留点精神明天继续去听,希望不会太普通的分享。

晚安 @北京。

  • 作者「」于 更新本文
  • 文章声明:自由转载-非商用-非衍生-保持署名 | BY-NC-SA
← 北京 Velocity 性能大会前夕 北京 Velocity 性能大会第二天→
  • 获取每日の能量源
  • ATP