缓存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的缓存机制.


浙公网安备 33010602011771号