建立Windows service使用FluentScheduler定時重新整理網頁
阿新 • • 發佈:2018-11-11
我們都知道iis的程式池預設的閒置回收時間是20分鐘,
如果是自己的伺服器,我們可以設定成0,閒置不回收。
這樣網站就不會出現每隔20分鐘沒有訪客訪問就出現開啟非常慢的情況。
但是,如果個別網站不是用自己的伺服器,只是買了一個虛擬空間,空間商不給我們設定這個請求,那就比較麻煩了。。每隔20分鐘就要忍受網站的龜速,難道就沒有解決辦法了嗎?當然有!
我們可以建立一個Windows服務,放到我們自己的伺服器上,每隔十幾分鍾,定時重新整理放在虛擬空間上的網站,這樣就解決了上述問題!
1、建立windwos服務
這裡說的很明白了,就不再闡述,https://www.cnblogs.com/mq0036/p/7875864.html
2、只貼一下服務使用FluentScheduler定時器自動重新整理網頁的程式碼
protected override void OnStart(string[] args) { writeLog("服務啟動"); writeLog("開始重新整理網頁"); if (File.Exists(configfile)) { var jsonStr = File.ReadAllText(configfile); var sites = JsonConvert.DeserializeObject<dynamic>(jsonStr); foreach (var item in sites.site) { string url = item.url; int time = item.time; Registry registry = new Registry(); registry.Schedule(async ()=> { await GetHtmlAsync(url, time); }).WithName(url).ToRunNow().AndEvery(time).Minutes(); JobManager.Initialize(registry); } } } private async Task GetHtmlAsync(string url,int time) { Stopwatch sw = new Stopwatch(); sw.Start(); var http = new HttpClient(); http.DefaultRequestHeaders.Add("User-Agent", "ozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"); var response = await http.GetAsync(url); if (response.IsSuccessStatusCode) { sw.Stop(); writeLog($"已重新整理 {url},狀態碼:{response.StatusCode}, 耗時{sw.Elapsed.TotalMilliseconds}毫秒, {time}分鐘後繼續執行重新整理!"); } else { writeLog($"重新整理失敗,發生未知錯誤!{response.StatusCode}"); } } protected void writeLog(string str) { using (FileStream stream = new FileStream(filePath, FileMode.Append)) using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine($"{DateTime.Now} - {str}"); } }
2、站點配置檔案的程式碼
{ "site": [ { "url": "https://www.baidu.com", "time": 19 }, { "url": "https://www.cnblogs.com", "time": 18 } ] }