我使用的是javascript而不是jQuery。
假设我的数据库中有3个用户[Kim,Ted,Box]和3个按钮,如下所示:
<button class="user">Kim</button>
<button class="user">Ted</button>
<button class="user">Box</button>
<div id="displayArea"></div>
如果有人点击任何按钮,它将在div中显示用户信息。
假设我单击Kim按钮并使用ajax并显示Kim的信息。现在我点击Ted它也调用一个新的ajax函数来获取数据。但是当我再次点击Kim时,我调用新的ajax函数来获取数据,而不是从缓存或某个地方获取数据。如果之前加载了数据,如何在不从ajax函数获取数据的情况下实现它?
我之所以需要这个,是因为我不希望用户等待再次获取他们之前加载的数据。
答案 0 :(得分:1)
通过创建一个负责缓存的函数来添加一个抽象级别,并从缓存中返回数据或发出Ajax请求。例如:
var getDataForUser = (function() {
/**
* We use an object as cache. The user names will be keys.
* This variable can't be accessed outside of this function
*/
var cache = {};
/**
* The function that actually fetches the data
*/
return function getDataForUser(user, callback) {
if (cache.hasOwnProperty(user)) { // cache hit
callback(cache[user]);
} else {
// somehow build the URL including the user name
var url = ...;
makeAjaxRequest(url, function(data) { // cache miss
cache[user] = data; // store in cache
callback(data);
});
}
};
}());
然后你拨打电话
getDataForUser('John', function(data) { /*...*/ });
两次,第二次点击缓存。