引數:
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會阻塞後邊的資源載...