最代码官方的gravatar头像
最代码官方 2015-01-25 21:54:13

jquery $ajax GET请求在IE浏览器兼容中遇到的304 cache请求的经验分享

在最代码上线后,印象最深的2个bug:

1.用户提醒数字明明已经查看了但是一直还在提示。

2.用户下载代码已经登录了但是一直提示尚未登录。

经过和牛牛们远程协助发现是因为在IE内核的浏览器下,http协议中浏览器端中对相同请求有cache的机制,会返回304 Not Modified提示浏览器可以继续用本地cache而忽略服务端返回的数据。

在jquery的$ajax请求中增加:cache:false参数即可:

例如下载代码时ajax调用是否下载代码的逻辑如下:

$(".download").click(function() {
			var id=$(this).attr("content_id");
			var niubi=$(this).attr("niubi");
			$.ajax({
				url : "/code/"+id+"/is_downloaded.htm",
				type : 'GET',
				dataType : 'json',
                                cache:false,
				success : function(json) {
					if(json.error==""){
						if(json.is_downloaded=="0"){
							if (!confirm("确认下载代码么?下载将扣除你"+niubi+"个牛币")) {
								return;
							}
						}
						window.location = "/code/" + id + "/download.htm";
					}else{
						alert(json.error);
					}
				}
			});
		});

相信好多牛牛都会遇到诸如此类的诡异问题,本地环境调试都正常,但线上却出现问题了,最重要的还是得多提高这种问题排查能力。


打赏

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友