今天参加Web标准化交流会的一些补充

时间:04月24日 23:04  标签: Web标准化交流会 w3ctech 前端优化 闭包

今天下午参加了《Web标准化交流会》广州站第七期的交流会,其中有网易邮箱的同学分享他们的前端开发中的架构和经验,百才网的同学分享他们对于项目中协同的理解,和Vingel同学的vim的视频分享。

 

 

其中网易同学分享时提到的14条前端优化的方法,出自于Yahoo的YUI前端开发工程师写的《高性能网站建设指南》,绝对是值得前端的同学详读的一本好书。当时提到了使用Expires头和Etag的使用。回家再翻了一下书,发现我当时说的不够准确,特此记录如下:

 

1、Expires头是以服务器时间来设定的。如:Expires: Thu, 15 Apr 2010 20:00:00 GMT。那么如果客户端和服务器时间不同步的话,那么实际的缓存效果就不可控了。

 

2、在HTTP1.1中,引入了Cache-Control头来改善这个问题。他是以客户端时间为基数,来设定一个有效期,单位为秒。如:Cache-Control:max-age=315360000(设定有效期为当次下载后10年)。

 

3、可以同时指定Expires头和Cache-Control头。而mag-age的优先级将大于Expires头。

 

4、apache里有mod_expires模块来设置Expires头以相对时间的方式返回值。

 

5、当用户本地为空缓存时,所有的请求都会被下载,产生200的状态码。当本地缓存有效时,而ie设置为自动(选项为每次访问时、每次启动时、自动、从不,默认为自动),则httpwatch可以看到为(cache),不会产生http请求。当用户明确重载(如crtl+F5、本地缓存过期或ie设置为每次访问时),则根据Last-Modified和服务器进行校验,如果Last-Modified一致,则返回If-Modified-Since头,重设本地缓存有效期,产生304状态码。

 

6、Http1.1中提供了Etag的校验方式。apache1.3和2.x的Etag格式是:inode-size-timestamp。IIS5.0和6.0的Etag格式为Filetimestamp:Changenumber。而对于有CDN网络的网站来说,不同服务器之间的Etag是不同的。

 

7、Etag的If-None-Match头比Last-Modified的If-Modified-Since头具有更高的优先级。所以如果Etag不匹配,但Last-Modified相同,也会产生200的状态码,而不是304。

 

8、IIS和apache都可以配置Etag的。一般建议apache设置为文件大小+时间戳,而IIS则只有时间戳。但最好的方法还是完全移除,只使用Last-Modified就足够了。

 

9、我觉得典型的闭包表现形式为:

a = function () {
	alert(\'test\');
}

function test () {
	var aa = \'hello\';
	return (function (name) {
		return name + \' world\';
	})(aa);
}

10、闭包只是内存泄露的一种方法,但不是必然。

相关文章:
5条评论(Comments) 订阅该Blog下的评论RSS
QQ农场外挂  [04月27日 14:38]
学习下就好。
eason  [04月26日 16:27]
@o仔,.htaccess是很影响效率。。。
o仔  [04月26日 16:00]
yui的前端优化个人觉得并不适应页面构建这一块,里面的优化更多是通过配置.htaccess来达到优化的目的,页面构建的只是页面,比较难接触服务器的东西。
wiky  [04月25日 01:31]
Good~~虽然没去,不过通过您的文章,感受到那种气氛了!~
mark  [04月24日 23:16]
踩过~
发表评论
正在加载...
搜索更多
文章导读
最新评论
我的豆瓣秀
RSS订阅
抓虾
Rojo
google reader
netvibes
my yahoo
newsgator
bloglines
鲜果
哪吒
有道
QQ邮箱
九点