我尝试将来自服务器的JSON AJAX响应存储在浏览器localStorage
中一分钟,并通过new Date().getMinutes()
添加时间戳。
在$(document).ready
上,我尝试将localStorage中的时间戳与我在这样的变量中设置的当前时间戳进行比较:new Date().getMinutes().toString()
,如果当前时间戳大于localStorage中的时间戳,则我再次拨打AJAX。
$(document).ready(function(){
var object = JSON.parse(localStorage.getItem("cache"));
if (object) {
var dateString = object.timestamp,
now = new Date().getMinutes().toString();
console.log('cache present. ' + object.timestamp + ' - checking against: ' + now + '');
if (now > dateString ) {
console.log('cache expired - refetching');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
return object.response;
} else {
console.log('cache not present - set it');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
});
这有效,但是如果用户在8:26:57加载页面,然后在8:27:06重新加载页面,即使还没有过去一分钟,也会发出AJAX请求。
我的问题是:我该如何在localStorage中设置确切的时间戳并将其与new Date().getMinutes().toString()
进行比较,并且仅在至少60秒过去之后才发出AJAX请求?
答案 0 :(得分:2)
您应该将.getTime()结果存储到本地存储中,然后将其与当前date.getTime()进行比较,结果将以毫秒为单位,因此您必须将其除以1000。