当前位置:  开发笔记 > 编程语言 > 正文

缓存JavaScript文件

如何解决《缓存JavaScript文件》经验,为你挑选了5个好方法。

哪个是使浏览器使用缓存版本的js文件(来自服务器端)的最佳方法?



1> William Macd..:

或者在.htaccess文件中

AddOutputFilter DEFLATE css js
ExpiresActive On
ExpiresByType application/x-javascript A2592000


^问题没有提到Apache,所以......任何事情都是有效的,C也是有效的.

2> powtac..:

看看雅虎!提示:https://developer.yahoo.com/performance/rules.html#expires.

Google还提供了一些提示:https://developers.google.com/speed/docs/insights/LeverageBrowserCaching



3> select..:

我刚刚完成了周末项目cached-webpgr.js ,它使用localStorage/web存储来缓存JavaScript文件.这种方法非常快.我的小测试显示

从CDN加载jQuery:Chrome 268ms,FireFox:200ms

从localStorage加载jQuery:Chrome 47ms,FireFox 14ms

实现这一目标的代码很小,您可以在我的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');
});



4> Ken..:

来自PHP:

function OutputJs($Content) 
{   
    ob_start();
    echo $Content;
    $expires = DAY_IN_S; // 60 * 60 * 24 ... defined elsewhere
    header("Content-type: x-javascript");
    header('Content-Length: ' . ob_get_length());
    header('Cache-Control: max-age='.$expires.', must-revalidate');
    header('Pragma: public');
    header('Expires: '. gmdate('D, d M Y H:i:s', time()+$expires).'GMT');
    ob_end_flush();
    return; 
}   

适合我.

作为开发人员,您可能会很快遇到希望缓存文件的情况,在这种情况下请参阅有关积极JavaScript缓存的帮助



5> Kalid..:

在Apache .htaccess文件中:

#Create filter to match files you want to cache 

Header add "Cache-Control" "max-age=604800"

我在这里也写过:

http://betterexplained.com/articles/how-to-optimize-your-site-with-http-caching/

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有