控制器直接调用时的ASP.Net MVC OutputCache

时间:2012-08-23 01:26:46

标签: asp.net asp.net-mvc

我有一个控制器动作,在给定几个输入参数的情况下动态渲染图形。由于在图形渲染时略显引人注目,因此我使用输出缓存来避免重新渲染。

有十几种输入参数组合经常使用。我认为加热缓存是个好主意,这样第一个使用这些组合中给定组合的访问者就不会遇到延迟。

为此,我直接从Application_Start()调用控制器:

UtilController uc = new UtilController();
uc.GenerateImage(p1, p2, p3);

通过设置断点,我看到调用控制器动作并生成图像。但是,浏览器请求图像的第一个(也是唯一一个)时间,它再次生成。出于此测试的目的,浏览器配置为不缓存任何内容,我仔细比较了用于调用控制器操作的参数。

直接调用控制器操作时是否不调用输出缓存?是否有一种更好的方法(希望是一个自包含在Web项目中)预热缓存?

1 个答案:

答案 0 :(得分:2)

  

直接调用控制器操作时是否不调用输出缓存?

不会调用它,因为您没有经历触发它的HTTP请求/响应周期。您正在直接调用恰好是您的行动的方法。

  

是否有更好的方法(希望网络上有一个独立的方法   项目)预热缓存?

您可以使用WebClient将HTTP请求发送到给定地址。只有当您将缓存配置为存储在服务器上时,这当然才有效。如果您将位置配置为下游或客户端,则它将没有任何用处。