opencart變慢,magento學(xué)習(xí)
2022-11-02 11:07:24 - 米境通跨境電商
Opencart2.0和1.5.6版本并不是完全兼容的,如果你現(xiàn)在有正在運行的opencart站點,不建議你升級。
扯了一段題外話。如果你在本地安裝opencart2.0站點試用的話,你會發(fā)現(xiàn)打開很慢,opencart2.0版本用了很多時髦技術(shù),其中還包括GoogleFonts。我們知道國內(nèi)把Google的IP地址都給墻了,所以,你沒辦法,你只能選擇把字體下載到本地,或者調(diào)用國內(nèi)的CDN,比如360。
文件位置:catalogview hemedefault emplatecommonheader.tpl
找到:
替換為:
如果你想進一步優(yōu)化opencart的打開速度,不妨把opencart引入的JS類庫等都換成CDN。
找到:
替換為:
!window.jQuery&&document.write('');
為了防止CDN宕機,(雖然這種情況極少見),我還是做了判斷,在宕機的情況下調(diào)用本地的jQuery類庫。
如果要對bootstrap的CDN引入也做此判斷的話,就需要動態(tài)判斷JS和CSS是否引入成功。
新建文件:catalogviewjavascriptcustom.js
//判斷是否成功引入css文件
functionisCssLoaded(link){
try{
if(link.sheet&&link.sheet.cssRules.length>0)
returntrue;
elseif(link.styleSheet
&&link.styleSheet.cssText.length>0)
returntrue;
elseif(link.innerHTML
&&link.innerHTML.length>0)
returntrue;
}
catch(ex){
if(ex.name&&ex.name=='NS_ERROR_DOM_SECURITY_ERR')
returntrue;
}
returnfalse;
}
//動態(tài)引入CSS、JS文件
vardynamicLoading={
css:function(path){
if(!path||path.length===0){
thrownewError('argument"path"isrequired!');
}
varhead=document.getElementsByTagName('head')[0];
varlink=document.createElement('link');
link.href=path;
link.rel='stylesheet';
link.type='text/css';
head.appendChild(link);
},
js:function(path){
if(!path||path.length===0){
thrownewError('argument"path"isrequired!');
}
varhead=document.getElementsByTagName('head')[0];
varscript=document.createElement('script');
script.src=path;
script.type='text/javascript';
head.appendChild(script);
}
}
引入custom.js文件到header.tpl里,
再加入以下代碼:
varisGoo=isCssLoaded("http://fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700");
//如果GoogleFonts無法加載,引入360的CDN類庫
if(!isGoo){
dynamicLoading.css("http://fonts.useso.com/css?family=Open+Sans:300,400,600&subset=latin,latin-ext");
}
//Bootstrap加載失敗,引入本地的類庫文件
varisBootCss=isCssLoaded("https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css");
if(!isBootCss){
dynamicLoading.css("catalog/view/javascript/bootstrap/css/bootstrap.min.css");
}