การใช้ localStorage นั้นรวดเร็ว (er)! การทดสอบของฉันแสดงให้เห็น
- กำลังโหลด jQuery จาก CDN: Chrome 268ms , FireFox: 200ms
- กำลังโหลด jQuery จาก localStorage: Chrome 47ms , FireFox 14ms
ฉันเดาว่าการบันทึกคำขอ HTTP จะทำให้ได้เปรียบความเร็วใหญ่แล้ว ทุกคนที่นี่ดูเหมือนจะถูกตัดสินในสิ่งที่ตรงกันข้ามดังนั้นโปรดพิสูจน์ฉันผิด
หากคุณต้องการทดสอบผลลัพธ์ของฉันฉันสร้างห้องสมุดขนาดเล็กที่เก็บสคริปต์ใน localStorage ลองดูที่ Github https://github.com/webpgr/cached-webpgr.jsหรือเพียงแค่คัดลอกจากตัวอย่างด้านล่าง
ห้องสมุดที่สมบูรณ์:
function _cacheScript(c,d,e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4==a.readyState&&(200==a.status?localStorage.setItem(c,JSON.stringify({content:a.responseText,version:d})):console.warn("error loading "+e))};a.open("GET",e,!0);a.send()}function _loadScript(c,d,e,a){var b=document.createElement("script");b.readyState?b.onreadystatechange=function(){if("loaded"==b.readyState||"complete"==b.readyState)b.onreadystatechange=null,_cacheScript(d,e,c),a&&a()}:b.onload=function(){_cacheScript(d,e,c);a&&a()};b.setAttribute("src",c);document.getElementsByTagName("head")[0].appendChild(b)}function _injectScript(c,d,e,a){var b=document.createElement("script");b.type="text/javascript";c=JSON.parse(c);var f=document.createTextNode(c.content);b.appendChild(f);document.getElementsByTagName("head")[0].appendChild(b);c.version!=e&&localStorage.removeItem(d);a&&a()}function requireScript(c,d,e,a){var b=localStorage.getItem(c);null==b?_loadScript(e,c,d,a):_injectScript(b,c,d,a)};
กำลังเรียกไลบรารี
requireScript('jquery', '1.11.2', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function(){
requireScript('examplejs', '0.0.3', 'example.js');
});