如何緩存asmx/js永久呼叫?我嘗試了HTTPModule並實現了緩存。但是,此緩存值在下次登錄時即將過期。它被重置爲最後一次修改日期的一年。通過代碼我不這樣做。在asmx中是否有任何默認設置?如果是這樣,有沒有辦法覆蓋設置?緩存asmx/js不會持續
我用下面的代碼來實現這一點。實際上,我的要求是將這個調用(GetMygrid.asmx/js)緩存在瀏覽器緩存中幾天,並避免304響應。我可以使用HTTPModule緩存這個調用。
private void EndRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
var path = context.Request.Path.ToLower().Replace('\\', '/');
if (path.EndsWith("/js") || path.EndsWith("/jsdebug"))
{
var lastModified = DateTime.UtcNow;
var expires = lastModified + TimeSpan.FromDays(5);
context.Response.Cache.SetLastModified(lastModified);
context.Response.Cache.SetExpires(expires);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
}
}
此代碼在運行時正常工作,而我多次訪問特定頁面。 (GetMygrid.asmx/js)在訪問頁面並獲取以下緩存標題時,我沒有收到304響應。
的Cache-Control:公共
截止日期:星期一,2012年2月27日4時52分11秒GMT
的Last-Modified:星期三,2012 02月22日4時52分11秒GMT
服務器:Microsoft-IIS/7.5
但我的問題是,當我在app(關閉瀏覽器,然後登錄)登錄接下來的時間,這個緩存過期的d值改變回去一年。我正在使用GET
方法進行此調用。
緩存控制:私人
內容類型:應用程序/ x-的JavaScript;字符集= UTF-8
內容編碼:gzip
到期日:星期一,2011年2月21日15點35分48秒GMT
上次修改:星期三,2012 02月22日4時39分37秒GMT
在登錄期間,應用程序中沒有任何代碼可以重置緩存。
不理解爲什麼會發生。
有人能幫我嗎?
如果您將InlineScript =「True」添加到頁面上的服務參考,腳本將作爲內聯腳本。這減少了往返。但是,這意味着它們不會被包含在緩存中(如果您的緩存成功了,我還沒有成功)。 – 2017-03-03 20:43:36