我有IIS7.5。我们目前对我们网站上的实体进行加权评级。计算加权评级非常慢,加载主页现在需要加载10秒以上。
要解决这个问题,我想将权重存储在每个实体的数据库中,并让IIS每5-10分钟运行一次脚本,重新计算权重。
我该怎么做呢?如果它运行网页网址,对我来说最简单。
答案 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
一些优点包括:
但是,您需要具有合理的完全访问权限才能安装和运行服务。
答案 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