模仿yui將css和js打包,加速網頁速度

2022-09-08 10:03:07 字數 1473 閱讀 7576

引數: 

version,如果乙個combo請求帶有version引數,作者就應該知道這個url的內容什麼時候改變。這個引數很有用,待會兒繼續說。 

prefix,postfix這個故名思意了,可以大大的縮短url長度。 

separator,如果大部分檔案是具有相同前字尾,而有的沒有遵循這個約定,也可以混合在一起,就是這個searator之後,不再新增前字尾。 

那麼version有什麼用呢?既然你知道version和內容變化的對應關係,對於具有version的url請求,你可以設定永久快取,比如10年。除此之外,從url生成乙個md5值,作為etag傳送給瀏覽器。當瀏覽器請求的時候,伺服器如果發現:有version,有etag,那麼最大的可能是使用者強制重新整理瀏覽器,通過比較etag和url的md5值,如果一致,返回304即可。

​1. [**][j**a]**    

if(finalqs.isempty());

}//client cache 針對url而定,那麼只要url不同,cache就不會hit

//如果某個url帶有version欄位,那麼作者必須知道這個內容的變化,所以可以永久快取。

if("css".equals(type))else if("js".equals(type))else

if(type == null || type.isempty())type = "text/j**ascript";

res.setcontenttype(type + ";charset=utf-8");   

res.setcharacterencoding("utf-8");

if(version == null || version.isempty())else手繪

res.setheader("cache-control","max-age=" + periodcontants.year_in_seconds * 10);

res.setheader("etag", shaservice.encrypt(finalqs));

}writer out = res.getwriter();

file wr = new file(getservletcontext().getrealpath("/"));

boolean separatorreached = false;

for(string fn : fns)

if(fn.equals(separator))

file f = null;

if(!separatorreached)

if(postfix != null && !postfix.isempty() && !fn.endswith(postfix))

}f = new file(wr,fn);

if(f != null && f.isfile() && f.exists()) catch (exception e) }}

out.flush();

out.close();

JS動態載入CSS和JS

這兩天工作時用到動態載入css和js的地方比較多,這裡稍微做下整理。if this.readystate this.readystate loaded this.readystate complete 因為在ie中使用onreadystatechange,而gecko,webkit 瀏覽器和oper...

新增css和js檔案

需要注意的是,你可以通過umbraco後台的ui來建立樣式檔案,建立路徑是settings stylesheets create,不過站長覺得手動去建立css檔案更簡單直接。接下來就是js檔案,拷貝初始化包裡的modernizr 2.0.6.min.js檔案到站點的scripts資料夾中,相應的你也...

JS阻塞和CSS阻塞

js的阻塞 3 嵌入js會阻止所有內容的呈現,但是外部jsd只會阻止其後內容的顯示 css阻塞 1 ie6下的css都是會阻止載入的 解決方法 把嵌入的js放在css前邊 3 原因 瀏覽器會維持html中css和js的順序,樣式表必須在嵌入放入js執行前先載入 解析完,而嵌入的js會阻塞後邊的資源載...