ASP.NET MVC 4中的缓存文件

时间:2013-03-18 11:32:45

标签: asp.net-mvc

在MVC 4 / SQL 2012 / Entity Framework 5应用程序上,我将上传到数据库的所有文件都放到一个表中。

然后我按照以下步骤在FileController中执行操作:

public partial class FileController : Controller {
  public virtual ActionResult Get(Guid key) {
    // Get file from database and return File
  }
}

我在MVC中为这些文件提供了哪些缓存策略?

我应该使用ETag吗?怎么样?

有人可以帮我解决这个问题吗?

谢谢,

米格尔

1 个答案:

答案 0 :(得分:2)

我不认为使用etags是识别文件名的明智选择。使用它们有其自身的优点和缺点,请阅读 this article 以获取有关etags的更多信息。

有几种方法可以缓存结果集,即您的文件中的文件。但是在处理缓存ORM对象时需要注意这一点,因为当文件发生一些变化时,缓存的项目通常会被删除或者不会更新,您需要自己处理这个部分。无论哪种方式,您都可以设置需要刷新的缓存数据的持续时间。

我还没有在.NET MVC4中获得用于缓存数据的内置支持,无论如何,您始终可以编写自己的自定义API或使用/修改现有API来完成所需的任务。在这种情况下,您可能会发现 this post 很有帮助。至于使用GUID键作为文件名的情况,没有这样的规则可以指出etags和uid并排。您始终可以按照自己的方式缓存数据。看看 Steve's blog ,他正在使用MVC的实体框架。

编辑:

在客户端浏览器上缓存也是一个难以理解的问题。这一切都取决于类型,持续时间,灵敏度,最重要的是用户,更不用说应用程序的性能。正如我的好朋友曾经说过的那样:“在你饿的时候不要吃东西”......

要在客户端浏览器中设置缓存,可以在asp:

中执行类似的操作

从下面提到的文章的例子中:

<%@ OutputCache Duration='120' Location='Client' VaryByParam='none' %>

'这会将缓存保存120秒,缓存的数据不应该保存在服务器上,它应该只存储在客户端浏览器上。'

有关探索缓存 in this article this one 的更多信息。