zoukankan      html  css  js  c++  java
  • 创建Windows service使用FluentScheduler定时刷新网页

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

      

      

  • 相关阅读:
    《移动WEB前端高级开发实践@www.java1234.com.pdf》【2】
    《生鲜零售智能化之路》
    房屋布局分析《Physics Inspired Optimization on Semantic Transfer Features: An Alternative Method for Room Layout Estimation》
    《2018:skymind.ai 发布了一份非常全面的开源数据集》
    Flask/Tornado/Django
    《特征提取与图像处理》
    《icra16_slam_tutorial_tardos.pdf》
    《3D_Deep_Learning_for_Robot_Perception.pdf》
    《深度访谈:华为开源数据格式 CarbonData 项目,实现大数据即席查询秒级响应》
    数据库性能测试
  • 原文地址:https://www.cnblogs.com/wxb8/p/9943937.html
Copyright © 2011-2022 走看看