是否可以根據會話中的某些值改變MVC中的輸出緩存?我已經閱讀了很多關於在Global.asax中使用varybycustom功能和重寫GetVaryByCustomString的知識,但會話在此時不可用。基於會話值的MVC OutputCache
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "somekey")
//Want to check the session here (but it isn't available).
return base.GetVaryByCustomString(context, custom);
}
我明白這是因爲直到稍後請求管道中才創建會話。
我的問題是,如果不根據用戶的會話改變緩存,頁面(根據用戶在會話中有什麼變化,具有特定於該用戶的附加HTML等)將被緩存(因爲URL是同樣),並由我們的負載均衡器,代理服務器等提供服務,然後用其他人的會話信息在頁面上提供其他請求!
該URL相同的原因是用戶作爲'客人'進來,輸入一些信息(POST),這是驗證和存儲在會話中,然後他們被重新定向回到同一頁面(現在應該基於會話數據專用於用戶)。
頁面本身應該正常緩存,因爲如果'訪客'訪問相同的URL,它應該每次都服務於相同的'標準'頁面。
可以通過這種方式改變緩存嗎?