jsonp 数据缓存

简爱代码>JavaScript2015-6-24 21:5449100

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信息即可

本文出自简爱博客,转载时请注明出处及相应链接。

    发表评论

    电子邮件地址不会被公开。必填项已用*标注