移动web开发ajax缓存操作
生活随笔
收集整理的這篇文章主要介紹了
移动web开发ajax缓存操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
移動(dòng)web開發(fā)過程中網(wǎng)速是必須考慮的一個(gè)因素,所以一般是盡可能的在本地存儲(chǔ)數(shù)據(jù),避免弱網(wǎng)環(huán)境下請(qǐng)求數(shù)據(jù)失敗導(dǎo)致頁面沒有內(nèi)容的情況。
前后端分離是web開發(fā)的必然趨勢(shì),在PC端我們有時(shí)甚至為了避免ajax緩存去做一些處理,但是移動(dòng)端我們卻需要把a(bǔ)jax請(qǐng)求給緩存下來,尤其是json數(shù)據(jù)。
function ajaxCache(opt){function getStoreKey(opt){var url = opt.url; //緩存最后面的json文件名var storeKey = url.match(/([^\/]*)\/*$/)[1];var hashStr = url;if (opt.data){hashStr += JSON.stringify(opt.data);}var hash = hashStr;storeKey += hash;return storeKey;} //加載緩存的數(shù)據(jù)function loadCachedData(opt, storage){var storeKey = getStoreKey(opt);var data = storage.getItem(storeKey);try{data = JSON.parse(data);} catch(e){Logger.log(storeKey+":緩存數(shù)據(jù)解析出錯(cuò)");data = null;}return data;}function attachSuccessProxy(opt, storage){var oldSuccess = opt.success;opt.success = function(){var data = arguments[0];if (data){var storeKey = getStoreKey(opt);storage.setItem(storeKey, JSON.stringify(data));}oldSuccess.apply(this, arguments);};}var cachedAjax = function(opt){if (!opt.url){opt.url = location.toString();}if (opt.sessionCache && opt.success){var sessionData = loadCachedData(opt, session);if (sessionData){opt.success(sessionData, 'session');return; // no further request from remote server }attachSuccessProxy(opt, session);}if (opt.localCache && opt.success){var localData = loadCachedData(opt, local);if (localData){opt.success(localData, 'local');}attachSuccessProxy(opt, local);}$.ajax(opt);};return cachedAjax;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/hutuzhu/p/4318254.html
總結(jié)
以上是生活随笔為你收集整理的移动web开发ajax缓存操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Service详解(二)
- 下一篇: Linux下MySQL链接被防火墙阻止