前段時間發布了一個asp.net生存html緩存的東西,老實說坑了蠻多的人,bug比較多, 經過這段時間的測試與改進,應該到了可以使用的地步了,
歡迎大家測試與使用,下面我介紹使用教程,對了,這里感謝一下猴子,他幫我測試了很多。
首先請將StaticHtml.dll添加引用,或者拷貝到bin目錄中,下面是具體配置說明
注意:下面的配置步驟都是在web.config中操作。
1. 添加StaticHtml配置文件讀取節點
在configuration/configSections添加如下節點
<section name="staticHtml" type="StaticHtml.StaticHtmlSection,StaticHtml"/>
添加StaticHtml
2. 添加HttpModule
在configuration/system.web/httpModules中,添加
<add name="staticHtml" type="StaticHtml.HttpModule,StaticHtml"/>
如果這樣配置,用瀏覽器訪問任意一個頁面,如果根目錄下沒有生成staticHtml_log.txt這個文件,請將上面的節點,添加到configuration/system.webServer/httpModule中
當然,請確保你服務器能正確加載httpmodule,因為有可能你的服務器配置,根本就不能加載任何httpmodule。請參考asp.net mvc配置
3. 配置自己站點的生成緩存規則
在configuration中添加如下節點
<staticHtml skip="admin/" run="on">
<rule name=" index ">
<patten type="StaticHtml.RegexPatten,StaticHtml" pars="RegPatten=index \.aspx"/>
<store type="StaticHtml.MemStore,StaticHtml"/>
<genKey type="StaticHtml.UrlMd5GenKey,StaticHtml"/>
<expire type="StaticHtml.TimeExpire,StaticHtml" pars="Second=300"/>
</rule>
<rule name="content">
<patten type="StaticHtml.RegexPatten,StaticHtml" pars="RegPatten=article/"/>
<store type="StaticHtml.FileStore,StaticHtml" pars="Path=cacheHtml_article/"/>
</rule>
</staticHtml>
上面的配置,定義了2個規則,
第一個規則,
<rule name=" index ">
<patten type="StaticHtml.RegexPatten,StaticHtml" pars="RegPatten=index\. aspx "/>
<store type="StaticHtml.MemStore,StaticHtml"/>
</rule>
規則,這個規則的名字叫做index,
patten節點 如果url中匹配index\. aspx 這個正則表達式,則緩存。
store節點 將緩存的html保存到內存中
genKey 節點 將request.rawRul通過md5加密生成key,在statichtml非常重要,代表了一個唯一的緩存頁面,
expire節點 意味着緩存300秒(5分鍾)
第二個規則
<rule name="content">
<patten type="StaticHtml.RegexPatten,StaticHtml" pars="RegPatten=article/"/>
<store type="StaticHtml.FileStore,StaticHtml" pars="Path=cacheHtml_article/"/>
</rule>
這個規則的名字叫做content(規則名字不能重復)
patten 節點 如果url中匹配article/這個正則表達式的,就緩存
store節點 將緩存的保存到根目錄下面/cacheHtml_article中
StaticHtml節點 skip屬性 admin/ 代表如果url能匹配這個正則表達式,則不緩存。
提示:staticHtml節點skip 屬性,patten節點的 pars屬性, 都是可以配置正則表達式的, 就是一個純粹的正則表達式,可以寫的很復雜,也可以很簡單。
4. 其他補充
1:下篇文字我將詳細介紹如何擴展statichtml
2:下載statichtml.dll(這是最新版,使用gzip壓縮存儲,大大減少磁盤占用,網站流量。)
3:源碼還是在github上https://github.com/tianqiq/StaticHtml
4:經網友測試發現,在4.0,4.5 .net上會出現刷新后,就空白的情況。所以請將項目的.net版本設置為3.5,即可。(真沒想到這么多童鞋是用4.0甚至4.5了)
更新:
現在已經修復4.0以上刷新后,空白的情況, 歡迎測試與使用。(2013/7/21)
代碼已經更新到github上, 請從這里下載最新dll http://url.cn/H5TSeH