IIS7是否可以让它每隔5分钟运行一次网页?

时间:2011-12-29 18:23:54

标签: asp.net iis-7 iis-7.5 timedelay

我有IIS7.5。我们目前对我们网站上的实体进行加权评级。计算加权评级非常慢,加载主页现在需要加载10秒以上。

要解决这个问题,我想将权重存储在每个实体的数据库中,并让IIS每5-10分钟运行一次脚本,重新计算权重。

我该怎么做呢?如果它运行网页网址,对我来说最简单。

5 个答案:

答案 0 :(得分:3)

您可以使用Cache条目,将来设置为10分钟。

添加项目时,使用CacheItemRemovedCallback参数的回调函数 - 在此回调函数中,您的数据库是否正常工作并重新添加过期的缓存条目。

其他选项包括:

Windows服务和计划任务仍然需要您通过某种方式将结果传达给IIS。

答案 1 :(得分:3)

一种方法是使用Windows服务而不是调用Web URL。

然后可以在后台完全带外运行以执行计算。有关详细信息,请访问:

http://msdn.microsoft.com/en-us/library/d56de412%28v=VS.100%29.aspx

一些优点包括:

  • 您的IIS进程不会受到影响,因此您的用户将看不到减速
  • 可以独立于网站停止或启动服务

但是,您需要具有合理的完全访问权限才能安装和运行服务。

答案 2 :(得分:2)

要不使用客户端,只有服务器连续调用此函数,您可以在服务器上创建一个线程来调用计算它的函数。

启动线程或计时器的更好方法是在Global.asax中,如下例所示:

public class Global : System.Web.HttpApplication
{
    private Timer _timer;

    void Application_Start(object sender, EventArgs e)
    {
        int period = 1000 * 60 * 10; // 10 minutes
        _timer = new Timer(TimerCallback, null, 1000, period);
    }

    private void TimerCallback(object state)
    {
         // Do your stuff here
    }
}

}

答案 3 :(得分:0)

我之前做过类似的事情,我曾使用Windows计划任务以特定的时间间隔调用我的脚本。

答案 4 :(得分:-1)

带有WGET或类似功能的简单批处理文件,以及计划任务的帮助。

http://www.gnu.org/software/wget/

你可以尝试这个来测试这个想法:

wget http://localhost/filename.ashx