让Ajax请求可以被缓存
Ajax一个主要的好处是它能及时反馈的用户体验,因为它可以异步请求后台web服务器。然而,使用Ajax不能保证用户玩着自己的手指头等着这些异步JavaScript和XML作出响应并返回。在很多的应用中,用户是否会等着取决于Ajax是如何被使用的。例如,在一个基于web的email客户端中用户会一直等到搜索email消息的Ajax请求全部返回为止。请记住一点:异步不等于及时。
为了改善性能,优化Ajax响应很重要。最重要的方法是利用响应缓存来改进Ajax的性能,如增加Expires头,Cache-Control头等。下面列举了另外一些方法:
- 使用Gzip模块
- 减少DNS查询
- 压缩JavaScript
- 避免重定向
- 配置ETags头
看个例子。一个web2.0邮件客户端可能使用Ajax来下载用户的地址簿来做自动完成使用。如果用户在上次使用这个产品之后一直没有修改过地址簿信息,那么地址簿响应数据可以在cache里面读取,前提是那个Ajax请求返回的时候加了将来时间的Expires和Cache-Control头。浏览器必须知道什么时候用以前的cache内容,什么时候得发起一个新的请求。怎么实现呢?可以将用户地址簿的最后修改时间戳加在请求的URL里面,例如,&t=1190241612这样。如果上一次加载时修改时间没有变化的话,再次发起的请求就会从浏览器的cache里面读取了,这样就消除了额外的HTTP折返请求。如果修改时间变了,那么请求的URL就是新的,在浏览器的cache里面找不到可用的数据,浏览器就重新发起请求,更新整个数据。
甚至你的Ajax响应内容是动态生成或者是针对单个用户的,它们还是可以被cache的。这样做肯定能加速的web2.0应用。
阅读(1485) | 评论(0) | 转发(0) |