ASP.NET 客户端缓存
#region 客户端缓存
/// <summary>
/// 设置客户端缓存文件
/// </summary>
/// <param name="lastModified">最后被修改的时间</param>
private void SetClientCaching(DateTime lastModified)
{
Response.Cache.SetETag(lastModified.Ticks.ToString());
Response.Cache.SetLastModified(lastModified);
//public 以指定响应能由客户端和共享(代理)缓存进行缓存。
Response.Cache.SetCacheability(HttpCacheability.Public);
//是允许文档在被视为陈旧之前存在的最长绝对时间。
Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
//可调过期策略
Response.Cache.SetSlidingExpiration(true);
}
private void SetClientCache()
{
//默认缓存的秒数
int secondsTime = 100;
//判断最后修改时间是否在要求的时间内
//如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。如果服务器端的文件被修改过,则返回和第一次请求时类似。
if (Request.Headers["If-Modified-Since"] != null && TimeSpan.FromTicks(DateTime.Now.Ticks - DateTime.Parse(Request.Headers["If-Modified-Since"]).Ticks).Seconds < secondsTime)
{
//测试代码,在这里会发现,当浏览器返回304状态时,下面的日期并不会输出
Response.Write(DateTime.Now);
Response.StatusCode = 304;
//Response.HeaderEncoding.add("Content-Encoding", "gzip");
Response.StatusDescription = "Not Modified";
}
else
{
//输出当前时间
Response.Write(DateTime.Now);
//设置客户端缓存状态
SetClientCaching( DateTime.Now);
}
}
#endregion