我有我想使用OutputCache指令緩存的頁面。但是,我正在使用URL重寫器模塊來在此頁面上定向多個URL,每個URL都有不同的內容。基於URL更改OutputCache
有什麼辦法可以使用緩存每個URL的輸出?沒有其他標準需要我改變緩存結果。
我有我想使用OutputCache指令緩存的頁面。但是,我正在使用URL重寫器模塊來在此頁面上定向多個URL,每個URL都有不同的內容。基於URL更改OutputCache
有什麼辦法可以使用緩存每個URL的輸出?沒有其他標準需要我改變緩存結果。
這到底是相當簡單的修復。
將以下指令添加到需要被緩存的頁面:
<%@輸出緩存持續時間= 「600」 位置= 「下游」 的VaryByParam = 「無」 VaryByCustom是= 「RawURL」 %>
此方法添加到Global.asax文件
public override string GetVaryByCustomString(HttpContext context, string custom)
{
switch (custom.ToUpper())
{
case "RAWURL":
return context.Request.RawUrl;
default:
return "";
}
}
以編程方式,您可以使用Response.Cache來設置緩存選項。您可以打開查詢字符串變量並根據具體情況適當地設置Response.Cache上的屬性。
MSDN on Cache object
Another helpful article from aspalliance.com
我也可以改變CAC他基於請求頭,但是這些不會改變,並且沒有使用查詢字符串變量 – Blatfrig 2009-11-25 09:15:15
這很聰明......但它仍然返回一個200而不是304(未修改),就像使用非路由URL一樣。因此,雖然它可能不會再次生成頁面,但客戶端仍然必須重新獲取它,而不是使用本地緩存。仍然是個好問題。 – harpo 2011-04-06 06:38:00