在最代码上线后,印象最深的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);
}
}
});
});
相信好多牛牛都会遇到诸如此类的诡异问题,本地环境调试都正常,但线上却出现问题了,最重要的还是得多提高这种问题排查能力。