ウィジェットメモリキャッシュ
3077 ワード
プロジェクトの背景は前のブログと同じです.
ビジネスロジックに関する問題ですが、ページルーティング(どのpageにジャンプするかを決める)をしてバックグラウンドからデータを引くのですが、同じインタフェースがページにも使われています.これらのデータをよりよく利用するために、HTTPリクエストでキャッシュしました.
jsコードはこう書いてあります
GETネットワークリクエストのみをブロックするので、ネットワーク部分はこのようにカプセル化されています.
ps:netにはこちらのエラーコードがたくさん処理されています.コードの詳細は載せません.
キャッシュの有効時間を定義し、背景のニーズを簡単に効果的に満たします.使うときは、
ビジネスロジックに関する問題ですが、ページルーティング(どのpageにジャンプするかを決める)をしてバックグラウンドからデータを引くのですが、同じインタフェースがページにも使われています.これらのデータをよりよく利用するために、HTTPリクエストでキャッシュしました.
jsコードはこう書いてあります
var data ={};
var memory=function() {
function push(key, value) {
data[key] = {
time: utils.now(),
data: value
}
}
function pop(key) {
var obj = data[key];
if (obj){
delete cache[key];
if (utils.now() - obj.time < 3)return obj.data;
}
return null;
}
function invalid(){
data = {};
}
return {
push: push,
pop: pop,
invalid: invalid,
all: function () {
return data;
}
}
}
module.exports = memory
GETネットワークリクエストのみをブロックするので、ネットワーク部分はこのようにカプセル化されています.
function GET(options) {
//TODO
var memory = cache.memory();
if (options && options.url) {
if (options.cache) {
//
var originSuccess = options.success;
if (originSuccess) {
options.success = (resp) => {
memory.push(options.url, resp);
originSuccess(resp);
}
}
} else {
//
var target = memory.pop(options.url);
if (target && options.success) options.success(target);
if (target) return;
}
}
net(options, 'GET')
}
ps:netにはこちらのエラーコードがたくさん処理されています.コードの詳細は載せません.
キャッシュの有効時間を定義し、背景のニーズを簡単に効果的に満たします.使うときは、
options.cache=true
です