在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吗?怎么样?
有人可以帮我解决这个问题吗?
谢谢,
米格尔
答案 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 的更多信息。