日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript使用localStorage缓存Js和css文件

發布時間:2025/7/14 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript使用localStorage缓存Js和css文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于WebApp來說,將js css文件緩存到localstorage區可以減少頁面在加載時與HTTP請求的交互次數,從而優化頁面的加載時間.特別是當移端信號不好高延遲時優化效果還是很顯見的

下面的代碼可以實現此功能:

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><!-- 1.緩存css、js到LocalStorage 2.調用本地緩存css/js拼接到HTML頁面 --><script type="text/javascript">//入口函數if (window.localStorage) {initJs();initCss("css", "reset.css");} else {alert("不能使用本地緩存");addFile("http://libs.baidu.com/jquery/2.0.0/jquery.min.js", "js");addFile("/gfdzp201508257998/Turntable/Script/whir.turntable.js", "js");addFile("/gfdzp201508257998/Turntable/Style/css_whir.css", "css");}//第一步:加載頁面js:先加載jQuery后加載用戶腳本function initJs() {var name = "jquery"; //存儲key的namevar url = "js/jquery-1.9.1.min.js";var xhr;var js = window.localStorage ? localStorage.getItem(name) : "";if (js == null || js.length == 0) {if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XMLHTTP");} else if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();}xhr.open("GET", url);xhr.send(null);xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {js = xhr.responseText;localStorage.setItem(name, js);js = js == null ? "": js;addTxt(js, "js");initTurntable(); //確保先引用Jquery }};} else {addTxt(js, "js");initTurntable();}}//加載自定義腳本function initTurntable() {var name = "zidingyi";var url = "js/zidingyi.js";var xhr;var js = window.localStorage ? localStorage.getItem(name) : "";if (js == null || js.length == 0) {if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XMLHTTP");} else if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();}xhr.open("GET", url);xhr.send(null);xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {js = xhr.responseText;localStorage.setItem(name, js);js = js == null ? "": js;addTxt(js, "js");}};} else {addTxt(js, "js");}}//第二步:初始化Cssfunction initCss(name, url) {var xhr;var css = window.localStorage ? localStorage.getItem(name) : "";if (css == null || css.length == 0) {if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XMLHTTP");} else if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();}xhr.open("GET", url);xhr.send(null);xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {css = xhr.responseText;localStorage.setItem(name, css);css = css == null ? "": css;css = css.replace(/images\//g, "style/images/");addTxt(css, "css");}};} else {css = css.replace(/images\//g, "style/images/");addTxt(css, "css");}}//輔助方法1:動態添加js,css文件引用function addFile(url, fileType) {var head = document.getElementsByTagName('HEAD').item(0);var link;if (fileType == "js") {link = document.createElement("script");link.type = "text/javascript";link.src = url;} else {link = document.createElement("link");link.type = "text/css";link.rel = "stylesheet";link.rev = "stylesheet";link.media = "screen";link.href = url;}head.appendChild(link);}//輔助方法2:動態添加js,css文件內容 function addTxt(text, fileType) {var head = document.getElementsByTagName('HEAD').item(0);var link;if (fileType == "js") {link = document.createElement("script");link.type = "text/javascript";link.innerHTML = text;} else {link = document.createElement("style");link.type = "text/css";link.innerHTML = text;}head.appendChild(link);}</script></body> </html>

再看看封裝通用插件方法:

/*** 插件功能:使用localStorage緩存js和css文件,減少http請求和頁面渲染的時間,使用于web移動端H5頁面的制作* 使用方法:* 1.使用此插件前,需要給插件的pageVersion變量賦值,建議變量值由服務器后端輸出,當需要更新客戶資源時,修改變量值即可* 2.加載js:由于js加載有順序要求,所以需要將后加載的腳本作為前一個加載的回調函數參數傳入,如:* whir.res.loadJs ("jquery","TurnTable/Script/jquery.min.js",* function () {* whir.res.loadJs(name,url,null)* });*/ var whir = window.whir || {}; whir.res = {pageVersion : "",//版本,有頁面輸入,用語刷新localStorage緩存loadJs : function (name, url, callback) {//動態加載js文件并緩存if (window.localStorage) {var xhr;var js = localStorage.getItem(name);if (js == null || js.length == 0 || this.pageVersion != localStorage.getItem("version")) {if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XMLHTTP");} else if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();}if (xhr != null) {xhr.open("GET",url);xhr.send(null);xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {js = xhr.responseText;localStorage.setItem(name,js);localStorage.setItem("version",whir.res.pageVersion);js = js == null ? "" : js;whir.res.writeJs(js);if (callback != null) {callback();}}}}} else {whir.res.writeJs(js);if (callback != null) {callback();//回調,執行下一個引用 }}} else {whir.res.linkJs(url);}},loadCss : function (name,url) {if (window.localStorage) {var xhr;var css = localStorage.getItem(name);if (css == null || css.length == 0 || this.pageVersion != localStorage.getItem("version")) {if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XNLHTTP");} else if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();}if (xhr != null) {xhr.open("GET",url);xhr.send(null);xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {css = xhr.responseText;localStorage.setItem(name,css);localStorage.setItem("version",whir.res.pageVersion);css = css == null ? "" : css;css = css.replace(/images\//g,"style/images/");//css里的圖片路徑需要單獨處理 whir.res.writeCss(css);}}}} else {css = css.replace(/images\//g,"style/images/");//css里的圖片路徑需要單獨處理 whir.res.writeCss(css);}} else {whir.res.linkCss(url);}},writeJs : function (text) {//往頁面寫入js\腳本var head = document.getElementsByTagName('HEAD').item(0);//獲取headvar link = document.createElement("script");link.type = "text/javascript";link.innerHTML = text;head.appendChild(link);},writeCss : function (text) {//往頁面寫入css樣式var head = document.getElementsByTagName("HEAD").item(0);var link = document.createElement("style");link.type = "text/css";link.innerHTML = text;head.appendChild(link);},linkJs : function (url) {//往頁面引入jsvar head = document.getElementsByTagName('HEAD').item(0);//獲取headvar link = documenr.createElement("script");link.type = "text/javascript";link.src = url;head.appendChild(link);},linkCss : function (url) {//往頁面引入cssvar head = document.getElementsByTagName('HEAD').item(0); var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.rev = "stylesheet"; link.media = "screen"; link.href = url; head.appendChild(link);} };

? 調用該插件:

<script type="text/javascript" src="fengzhuang.js"></script> <script type="text/javascript"> //入口函數 whir.res.pageVersion = "1002"; //頁面版本,用于檢測是否需要更新緩存 whir.res.loadJs("jquery", "js/jquery-1.9.1.min.js", function () { whir.res.loadJs("zidingyi", "js/zidingyi.js", null); }); whir.res.loadCss("css", "reset.css", null); </script>

電腦端使用localstorage是測試沒有問題的,但是用android的apk打包之后,導致localstorage失效,無法進行緩存,查閱資料之后,得知解決方法:

安卓代碼:

mWebView.getSettings().setDomStorageEnabled(true); mWebView.getSettings().setAppCacheMaxSize(1024*1024*8); String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); mWebView.getSettings().setAppCachePath(appCachePath); mWebView.getSettings().setAllowFileAccess(true); mWebView.getSettings().setAppCacheEnabled(true);

另外:Web移動端使用localStorage緩存Js和css文件 | 強制不要緩存

1.盡量不把js放在onload事件中,而是放在由用戶主動觸發的事件 2.加時間戳,時間不同則會加載js而非使用緩存強制不要緩存: <meta http-equiv=Cache-Control content=no-cache /> 必須結合其他: <!-- 禁止瀏覽器從本地緩存中調閱頁面。--> <meta http-equiv="pragram" content="no-cache"> <!--網頁不保存在緩存中,每次訪問都刷新頁面。--> <meta http-equiv="cache-control" content="no-cache, must-revalidate"> <!--同上面意思差不多,必須重新加載頁面--> <meta http-equiv="expires" content="0"> <!--網頁在緩存中的過期時間為0,一旦網頁過期,必須從服務器上重新訂閱--> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

?

轉自:https://blog.csdn.net/qq_29132907/article/details/79390605

https://www.cnblogs.com/wwdxf/p/6646649.html

https://www.cnblogs.com/zyjzz/p/6973608.html

轉載于:https://www.cnblogs.com/7qin/p/10236737.html

總結

以上是生活随笔為你收集整理的JavaScript使用localStorage缓存Js和css文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97免费在线观看 | 久久精品香蕉 | 久久久久久无码精品人妻一区二区 | 久久福利在线 | 国产18av | 91国产视频在线播放 | 欧美精品一区二区视频 | 一级黄色录相 | 欧洲-级毛片内射 | 麻豆视频免费看 | 亚洲春色一区二区三区 | 天堂中文在线网 | 女人天堂网站 | 国内自拍第三页 | 污污网站免费在线观看 | 一本不卡 | 一级淫片免费 | 激情黄色av| 贝利弗山的秘密在线观看 | 人妻丰满熟妇无码区免费 | 成人毛片18女人毛片免费 | 中文字幕日韩在线观看 | 荒野求生21天去码版网站 | 看免费一级片 | 哪里看毛片 | 日本一区二区三区在线免费观看 | 2018天天弄 | 日本网站免费观看 | 青草视频网 | 亚洲激情五月婷婷 | 美女扒开尿口让男人捅爽 | 欧美人体视频 | 30一40一50老女人毛片 | 一级片在线观看免费 | 一级片大全 | 亚洲香蕉在线观看 | 在线免费视频观看 | 成人精品黄段子 | 综合久久91 | 富婆如狼似虎找黑人老外 | 日本黄色电影网址 | 亚洲精品乱码久久久久久 | 国产精品女同 | 日韩午夜 | av一区二区免费 | 国产乱人乱精一区二视频国产精品 | 鲁鲁在线 | 国产一区日韩 | 男女野外做受全过程 | 久草影视在线观看 | 97免费在线视频 | 四虎亚洲精品 | 影音先锋成人网 | 极品探花在线播放 | 欧美双性人妖o0 | 中文字幕在线观看一区 | 国产一级精品毛片 | 中文字幕美女 | 最新啪啪网站 | 欧美性猛交xxxx黑人交 | 亚洲一区二区三区在线视频观看 | 二区三区在线 | 性欧美久久 | youjizz欧美| 潘金莲一级淫片aaaaa武则天 | 日本一二三视频 | 猛男被粗大男男1069 | 国产人妻人伦精品1国产 | 美女扒开腿让男人捅 | 亚洲淫欲| 韩国av中文字幕 | 草草影院最新网址 | 丁香花电影在线观看免费高清 | 天堂网2018| 欧美多p | 黄色网址www| 波多野结衣在线观看一区二区三区 | 男女日批网站 | 国产精品午夜福利视频234区 | 欧美成人精品一区二区免费看片 | 国产免费一区二区三区在线观看 | 亚洲精品xxxxx | 亚洲综合免费视频 | 呦呦精品 | av一级网站 | 午夜毛片在线 | 日韩中文字幕视频在线 | 丁香婷婷社区 | 波多野结衣一二三四区 | 高潮一区二区三区 | 亚洲国产精品毛片av不卡在线 | 日本中文字幕免费观看 | 天堂网在线最新版www中文网 | 国产色呦呦 | 国产又大又粗又爽的毛片 | 色中色在线视频 | 操人视频网站 | 免费看黄色一级片 | 日日狠狠 |