IIS7可以让它每5分钟运行一个网页吗?

发布于 2024-12-23 12:19:32 字数 169 浏览 3 评论 0原文

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

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

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

I have IIS7.5. We currently have a weighted rating for entities on our website. Calculating the weighted rating is extremely slow, to the point loading the homepage now takes more than 10 seconds to load.

To solve this, I'd like to store the weighting in the database with each entity, and have IIS run a script every 5-10 minutes that recalculates the weightings.

How do I go about doing this? It would be easiest for me if it ran a webpage URL.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

无法言说的痛 2024-12-30 12:19:32

一种方法是使用 Windows 服务来实现此目的,而不是调用 Web URL。

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

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

一些优点包括:

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

但是,您需要对服务器具有相当的完全访问权限才能安装和运行该服务。

One approach is to use a Windows service for this rather than calling a web URL.

This can then run completely out-of-band in the background to perform calculations. Details on this are here:

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

A few advantages include:

  • Your IIS process will not be affected, so your users will see no slowdown
  • The service can be stopped or started independently of the Web site

However, you'll need to have reasonably full access to the server to install and run the service.

风启觞 2024-12-30 12:19:32

您可以使用 缓存< /a> 条目,设置为在未来 10 分钟后过期。

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

其他选项包括:

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

You can use a Cache entry for this, set to expire 10 minutes in the future.

When you add the item, use a callback function for the CacheItemRemovedCallback parameter - in this callback function do your database work and re-add the expiring cache entry.

Other options include:

Windows service and schedules tasks still require you to have some way to communicate the results to IIS.

弱骨蛰伏 2024-12-30 12:19:32

如果不使用客户端,仅使用服务器来连续调用该函数,可以在服务器上创建一个线程来调用计算它的函数。

启动线程或计时器的更好方法是在 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
    }
}

}

To not use client, only server to continuously call this function, you can create a thread on the server to call the function that calculates it.

A better way to start the thread or timer is in the Global.asax, like this sample:

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
    }
}

}

你好,陌生人 2024-12-30 12:19:32

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

I have done something like this earlier and I had used windows scheduled tasks to call my script at specific intervals of time.

涫野音 2024-12-30 12:19:32

使用 WGET 或类似文件的简单批处理文件以及计划任务的帮助即可完成此操作。

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

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

wget http://localhost/filename.ashx

A simple batch file with WGET or similar, and help from Scheduled Tasks will do it.

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

you can try this to test this idea:

wget http://localhost/filename.ashx
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文