我有一个 javascript/ajax 函数,它查找托管在另一台服务器上的 json 文件。我需要我的函数来执行以下操作:
- 从外部服务器获取 json 文件
- 将 json 文件保存在自己的本地服务器上
- 检查 json 文件是否早于 1 小时
- 如果它不早于 1 小时,则使用该数据
- 如果超过 1 小时 - 从外部服务器重新下载并覆盖本地版本
目前,我的函数每次调用时都会从外部服务器获取数据。我需要添加此缓存功能,但不确定如何处理它。
任何人都可以提供任何建议吗?
这是我的代码:
function ajaxLoad(page,url,type,variety,category , widgetClickedId)
{
/*
* Checking the clicked id is the same as passed in one
* TODO refactor so the clicked id only ever gets passed
*/
if(widgetId != widgetClickedId && widgetClickedId != undefined)
{
return false;
}
var website = $('#button-print'+widgetId).data("website");
var page = $('#button-print'+widgetId).data("page");
$.ajax({
type: 'GET',
url: 'www.myothersite.com/api/v1/productchoice.json?website='+website,
async: true,
jsonp: 'callback',
dataType: 'jsonp',
success: function(productchoice)
{
if(productchoice['brand'+widgetId] == 'null' || productchoice['brand'+widgetId] == undefined)
{
productchoice['brand'+widgetId] = '';
}
//check that all values are not null , if not , then show the widget
if( productchoice['brand'+widgetId] == ''
&& productchoice['subject'+widgetId] == ''
&& productchoice['market'+widgetId] == ''
&& productchoice['type'+widgetId] == ''
&& productchoice['bookazinebrands'+widgetId] == '')
{
//is this corect?
$('#gdmContainer'+widgetId).hide();
//return false;
}
else
{
$('#gdmContainer'+widgetId).show();
}
setRibbons(productchoice.ribbonTop , productchoice.ribbonBottom);
getProductChoice( productchoice );
setLoveTitle( productchoice);
setDefaultBtn(productchoice['defaultBtn'+widgetId]);
return productchoice;
}
});
提前致谢!