缓存js

View Code
 1 protected void Page_Load(object sender, EventArgs e)
 2         {
 3             var file = new List<string>
 4                            {
 5                                "js/jquery-1.7.2.min.js",
 6                                "js/pinyin.dict.src.js",
 7                                "js/pinyin.js"
 8                            };
 9             Response.Clear();
10             Response.ContentType = "text/javascript";
11 
12             var last = new DateTime(1900, 1, 1);
13             foreach (var script in file)
14             {
15                 var fileinfo = new System.IO.FileInfo(Server.MapPath(script));
16                 var max = fileinfo.LastWriteTime;
17                 last = last > max ? last : max;
18                 Response.Write("\r\n//" + script + "(" + fileinfo.Length + ")\r\n");
19                 Response.Write(System.IO.File.ReadAllText(fileinfo.FullName));
20 
21             }
22 
23             if (last > DateTime.Now)
24                 last = DateTime.Now;
25             //304缓存
26             Response.Cache.SetETag(last.Ticks.ToString());
27             Response.Cache.SetLastModified(last);
28             Response.Cache.SetCacheability(HttpCacheability.Public);
29             Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
30             Response.Cache.SetSlidingExpiration(true);
31 
32             //gzip压缩
33             Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
34             Response.AppendHeader("Content-Encoding", "gzip");
35 
36             DateTime modified;
37             //命中缓存
38             if (Request.Headers["If-Modified-Since"] != null && DateTime.TryParse(Request.Headers["If-Modified-Since"], out modified) && modified.ToString() == last.ToString())
39             {
40                 Response.StatusCode = 304;
41                 Response.StatusDescription = "Not Modified";
42 
43             }
44             Response.End();
45         }

在需要调用缓存JS页面

<script type="text/javascript" src="/mainJS.aspx"></script>

 

 

缓存主要是根据缓存中JS的最后更新时间.其中一个文件更新都会同意重新调用原
JS文件. 有时候更新上去刷新页面JS未能及时更新可能是.net的缓存机制.

posted @ 2012-11-15 09:47  /╱× 丫 丶  阅读(99)  评论(0)    收藏  举报