我们都知道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 } ] }