做好一個ASP.NET MVC網站,訪問速度非常慢,要幾秒到幾十秒不等的時間才能展現頁面.每隔幾十分鐘就會出現一次這樣的情況.下麵分享優化方法 開發環境是:VS2015 + IIS8+ SQL Server 部署環境是:Windows 2008 R2+ IIS7+ SQL Server 設置IIS回 ...
做好一個ASP.NET MVC網站,訪問速度非常慢,要幾秒到幾十秒不等的時間才能展現頁面.每隔幾十分鐘就會出現一次這樣的情況.下麵分享優化方法
開發環境是:VS2015 + IIS8+ SQL Server
部署環境是:Windows 2008 R2+ IIS7+ SQL Server
設置IIS回收程式池時間間隔,或者設置在特定時間回收
如果頁面中有ajax請求的話設置async為非同步請求
這樣的話如果出現介面響應慢就算沒有返回頁面也會先載入出來。
設置頁面緩存
[OutputCache(Duration = 86400, Location = OutputCacheLocation.Any)] public ActionResult Index() { return View(); }
Duration是獲取或設置緩存持續時間(以秒為單位)。
Location是獲取或設置位置。
編寫程式定時訪問網站
因為在上面設置的緩存時間是86400秒,網站在84600秒以後第一次訪問的話還是會出現慢的情況,那麼就要寫一個程式讓他定時訪問網站,避免緩存消失後第一次訪問出現慢的情況。
設置定時器:
Timer t = new Timer(); t.Elapsed += new ElapsedEventHandler(TimedEvent); t.Interval = (1000 * 86400); t.Enabled = true;
訪問方法,這個方法可能略微有點麻煩,我因為看到所以直接複製的。就不自己寫了
public static string PostAndRespStr(string url, int timeout = 5000, string postData = "", string contentType = "application/xml;", string encode = "UTF-8") { if (!string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(encode) && !string.IsNullOrEmpty(contentType) && postData != null) { HttpWebResponse webResponse = null; Stream responseStream = null; Stream requestStream = null; StreamReader streamReader = null; try { return GetStreamReader(url, responseStream, requestStream, streamReader, webResponse, timeout, encode, postData, contentType); } catch (Exception ex) { throw new Exception(ex.Message); } finally { if (responseStream != null) responseStream.Dispose(); if (webResponse != null) webResponse.Dispose(); if (requestStream != null) requestStream.Dispose(); if (streamReader != null) streamReader.Dispose(); } } return null; }
private static string GetStreamReader(string url, Stream responseStream, Stream requestStream, StreamReader streamReader, WebResponse webResponse, int timeout, string encode, string postData, string contentType) { byte[] data = Encoding.GetEncoding(encode).GetBytes(postData); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.Method = "POST"; webRequest.ContentType = contentType + ";" + encode; webRequest.ContentLength = data.Length; webRequest.Timeout = timeout; requestStream = webRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); webResponse = (HttpWebResponse)webRequest.GetResponse(); responseStream = webResponse.GetResponseStream(); if (responseStream == null) { return ""; } streamReader = new StreamReader(responseStream, Encoding.GetEncoding(encode)); return streamReader.ReadToEnd(); }
OK,發佈後在先在伺服器先自己訪問一次。然後試試網站速度。