简爱博客
jsonp 数据缓存
2015-6-24 简爱


jsonp 是跨域调用数据的常用方法,但是由于 每次调用数据都请求服务器所以这一点很是令人烦恼, 虽然服务器可以什么都不做 直接返回 304, 但毕竟还是发起了一次请求



jQueryjsonp 的简写方法如下:


$.getJSON("http://api.asilu.com/weather/?callback=?", function(s){
console.log(s);
});

这种写法,每次都会请求服务器数据,所以行不通,但是这种写法是最简单的


$.getJSON 行不通 就用 $.ajax  开启缓存试试


$.ajax({
url : 'http://api.asilu.com/weather/',
dataType : "jsonp",
cache: true, // 开启缓存
jsonp: 'callback',
success : function(s){
console.log(s);
}
});

在浏览器试试 还是白搭,这是肯定的 每次 请求服务器的 URL 查询 参数 都不同,肯定还是要 请求服务器数据


URL 查询参数 的变化主要就是  ?callback=jQuery*********  所以就有了本例的最终代码


$.ajax({
url : 'http://api.asilu.com/weather/',
dataType : "jsonp",
cache: true,
jsonpCallback: "jsonpCallback",
success : function(s){
console.log(s);
}
});







当然还有必不可少的服务单配合, 主要就是输出 HTTP 头的 Expires / Cache-control 信息即可