如您所知,我们在RC1版本的ASP.NET MVC中有一个新的ActionResult调用FileResult。如何使用ASP.NET MVC中的FileResult返回304状态RC1
使用它,您的动作方法可以动态地将图像返回给浏览器。事情是这样的:
public ActionResult DisplayPhoto(int id)
{
Photo photo = GetPhotoFromDatabase(id);
return File(photo.Content, photo.ContentType);
}
在HTML代码中,我们可以使用这样的事情:
<img src="http://mysite.com/controller/DisplayPhoto/657">
由于图像动态返回,我们需要一种方法来缓存返回的流,让我们不要不需要从数据库中再次读取图像。我想我们可以这样做,我不知道:
Response.StatusCode = 304;
这告诉浏览器,您已经在缓存中有图像。在将StatusCode设置为304之后,我只是不知道要在我的操作方法中返回什么内容。我应该返回null还是什么?
在第一请求,我设置ETag的属性这样的: HttpContext.Current.Response.Cache.SetETag(someUniqueValue); 在随后的请求中,通过阅读ETag,我知道图像在浏览器的缓存中,因此我必须返回304 – Meysam 2009-03-03 08:54:03
返回304时使用EmptyResult,而不是FileResult。 – 2009-03-03 12:41:27