《高性能网站建设指南》阅读笔记_规则14- 使Ajax可缓存

简单的额说就是使用之前的规则应用于Ajax请求。

很多时候我们会发现,当发起主动Ajax请求时,可能需要等待。改善这些主动Ajax请求的最重要的方式就是使响应可缓存。此外前面提到的规则中,规则4压缩组件,规则9减少DNS查找,规则10精简javascript,规则11避免重定向,规则13配置与禁用ETag

因为规则3使用缓存最重要,所以这里只介绍这一点

书中给的一个例子是雅虎邮箱的,用户如果查看没有将正文下载到本地的邮件,就会产生一个主动的ajax请求。但是如果关闭了这个网站之后又回来,就会发送相同的请求。因为之前的ajax响应并没有保存在浏览器缓存中。没有被缓存的原因是有一个值为no-storeCache-Control头以及一个日期为过去的Expires头,这些都告诉浏览器不要缓存。如果能使用一个长久的Expires头替换这些头就会缓存。但是一般认为:这应该是一个动态生成的响应只包含这个世界上的一个用户的相关信息,缓存这些东西似乎是没有意义的。作者认为,一个用户可能在一天或一周中多次查看这个邮件,如果缓存了响应,就会看到缓慢的和快速用户体验的差距。

当然,是这些ajax请求可缓存,除了改变HTTP头之外还需要更多的工作,响应的个性化和动态本质必须反映到缓存中,可以采用的最好方式是使用查询字符串参数。例如这个响应只对当前用户有效可以将用户名放到查询字符串中做到这一点,还有一点是要反映出确认的信息,如具体的哪一封邮件的缓存,可以使用邮件的唯一ID

示例:

Ws/mail/v1/rormrpc?m=GetMessage&yId=steve_souders&msgid=001234

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 😃 https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...