#region 客戶端緩存
/// <summary>
/// 設(shè)置客戶端緩存文件
/// </summary>
/// <param name="lastModified">最后被修改的時間</param>
private void SetClientCaching(DateTime lastModified)
{
Response.Cache.SetETag(lastModified.Ticks.ToString());
Response.Cache.SetLastModified(lastModified);
//public 以指定響應(yīng)能由客戶端和共享(代理)緩存進行緩存。
Response.Cache.SetCacheability(HttpCacheability.Public);
//是允許文檔在被視為陳舊之前存在的最長絕對時間。
Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
//可調(diào)過期策略
Response.Cache.SetSlidingExpiration(true);
}
private void SetClientCache()
{
//默認緩存的秒數(shù)
int secondsTime = 100;
//判斷最后修改時間是否在要求的時間內(nèi)
//如果服務(wù)器端的文件沒有被修改過,則返回狀態(tài)是304,內(nèi)容為空,這樣就節(jié)省了傳輸數(shù)據(jù)量。如果服務(wù)器端的文件被修改過,則返回和第一次請求時類似。
if (Request.Headers["If-Modified-Since"] != null && TimeSpan.FromTicks(DateTime.Now.Ticks - DateTime.Parse(Request.Headers["If-Modified-Since"]).Ticks).Seconds < secondsTime)
{
//測試代碼,在這里會發(fā)現(xiàn),當瀏覽器返回304狀態(tài)時,下面的日期并不會輸出
Response.Write(DateTime.Now);
Response.StatusCode = 304;
//Response.HeaderEncoding.add("Content-Encoding", "gzip");
Response.StatusDescription = "Not Modified";
}
else
{
//輸出當前時間
Response.Write(DateTime.Now);
//設(shè)置客戶端緩存狀態(tài)
SetClientCaching( DateTime.Now);
}
}
#endregion