O’Reilly Velocity China 2010笔记

哇喔,两年前的东西了,放在硬盘里,直到今天整理的时候才翻出来。
—废话结束,以下是正文—
Ajaxifying,Cacheing and Pipelining Facebook Website 这哥们能说中文
Site speed is critical to Facebook
生成时间/传输时间/渲染时间
Time-to-interact(TTI)
重要的内容首先到达
Quickling/PageCache/BigPipe 三大技术
Motivation:remove redundant work 用户是连续访问多个页面,页面过度时只生成不重复的内容
remove redundant work via Ajax 让浏览器不知道在更换页面,不进行页面卸载,通过Quickling来载入下一页(ajax载入,Quickling置换)
PageCache 缓存访问过的页面

采用Quickling技术可能降低延迟10%~30%,降低服务器开销(避免了内容的重复生成)
目前有45%的请求时通过它完成的

PageCache 缓存访问过的页面
Motivation – temporal locality

内容保存在js变量里面

挑战
实时性:Real time updates
获取更新后的好友更新
希望两分钟内的变更能够在恢复数据的出现在用户页面里

回调函数在恢复页面时执行

一致性:cache consistency
修改过的内容
访问其它页面又回到当前页面,让用户的修改反应在缓存里。记录成功的回调函数重新执行

Cross-page writes
在另外页面修改,内容反应到本页面,ajax携带更新部分的内容,更新局部页面

BIgPipe
Pagelet Programming model
Self contained
程序员可以设置优先级

Building Yahoo!’s Next Generation Mail

Parallelization
Modularity

A first impression is everything.

Web Service ,Page Download/Css download/js download

不同浏览器有不同的方法

不同网络的用户有不同的方法

3d
简单的开发
快速开发
轻松的调试
simple development process
quick deployment
easy debugging

Intefaces

require_static(A_css);

Google JSON风格指南中文版

上上个周末折腾出来的东西,经验和语言能力都有限,还有很多疏漏和误译,欢迎有兴趣的朋友提交”补丁”

翻译版托管在GitHub上,采用markdown语法撰写:
https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md

附一份导出的PDF版:
http://ioiocloud.sinaapp.com/cloud/JSONStyleGuide.pdf

PS:还没Dropbox帐号的同学用我的referrals申请吧^_^
-EOF-

Object-Oriented JavaScript笔记(七)

Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)

第八章 编码和设计模式

编码模式

  • Separating behavior
  • Namespaces
  • Init-time branching
  • Lazy definition
  • Configuration objects
  • Private variables and methods
  • Privileged methods
  • Private functions as public methods
  • Self-executable functions
  • Chaining
  • JSON

分离行为

内容与展现,行为分离

HTML:
1.尽可能的不使用style属性
2.与展现相关的tag都不应该被使用,如
3.根据语义使用相关的tag

行为:
1.尽可能减少script标签的数量
2.避免内联的事件(DOM Level 0)
3.不要使用CSS表达式
4.不影响禁用脚本的用户
5.在body标签闭合前引入脚本

命名空间
避免使用全局变量名以降低命名冲突的可能性。
为了简化编码,可以提供一个namespace()方法用于构造命名空间。

分支(条件)初始化
避免在运行时做特性嗅探,在初始化时候先嗅探再初始化相关函数。

惰性定义(延迟定义)
跟条件初始化类似,在需要使用到的时候再完成实际的函数定义工作。

参数对象化
使用对象的形式来传参数。
虽然JS支持可变参数,但是参数对象化后可以不用记住参数顺序,而且方便以后扩展。

私有属性及方法
内部属性和方法别让外部修改。

特权方法
用它来访问私有属性和方法。

将私有方法公开

自启动

链式调用
返回this

使用JSON
PS:原文中这节的示例代码是使用的单引号,这是十分不好的,应该避免。虽然在JS中单双引号等效,但标准中指明了是使用双引号。

设计模式

分三类:创建模式、结构模式和行为模式

  • 单例模式 Singleton
  • 工厂模式 Factory
  • 装饰模式 Decorator
  • 观察者模式 Observer

-EOF-