移动web开发ajax缓存操作
生活随笔
收集整理的這篇文章主要介紹了
移动web开发ajax缓存操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
移動web開發(fā)過程中網(wǎng)速是必須考慮的一個因素,所以一般是盡可能的在本地存儲數(shù)據(jù),避免弱網(wǎng)環(huán)境下請求數(shù)據(jù)失敗導致頁面沒有內容的情況。
前后端分離是web開發(fā)的必然趨勢,在PC端我們有時甚至為了避免ajax緩存去做一些處理,但是移動端我們卻需要把ajax請求給緩存下來,尤其是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ù)解析出錯");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;
}
?
轉載于:https://www.cnblogs.com/hutuzhu/p/4318254.html
總結
以上是生活随笔為你收集整理的移动web开发ajax缓存操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Service详解(二)
- 下一篇: Linux下MySQL链接被防火墙阻止