2013-03-05 42 views
5

Tôi đang tạo trang web với MVC 4. Đối với yêu cầu dự án, hình ảnh được lưu trữ trong cơ sở dữ liệu. Tôi có một Xem mà tôi gắn Model trong đó tôi có Id của hình ảnh kèm theo những câu chuyện, sau đó tôi có được hình ảnh:Hình ảnh cơ sở dữ liệu bộ nhớ đệm MVC

Xem:

<img src='<%= Url.Action("ShowImagen", "Home", new {id = item.IdImagen}) %>' style="width: 300px; 
         height: 200px;" /> 

Bộ điều khiển:

public FileResult ShowImagen(int id) 
    { 
     if (id > 0) 
     { 
      var imageData = new NoticiaRepository().GetImagen(id); 
      return File(imageData, "image/jpg"); 
     } 
     else 
     { 
      return null; 
     }   
    } 

Với điều này và kiểm tra nó với Chrome, tôi đã nhận thấy rằng khi tôi tải lại trang, nó không tải hình ảnh từ bộ nhớ cache, giống như các tệp khác dưới dạng .css hoặc các hình ảnh khác được tải từ hệ thống tệp.

Có cách nào để làm cho những hình ảnh này được lưu trong bộ nhớ cache không? Lời chào và cảm ơn.

Trả lời

11

Bạn có thể trang trí hành động ShowImagen điều khiển của bạn với các thuộc tính [OutputCache]:

[OutputCache(Duration = 3600, Location = OutputCacheLocation.Client, VaryByParam = "id")] 
public ActionResult ShowImagen(int id) 
{ 
    ... 
} 
+0

Cảm ơn, tôi đã thử bằng cách sử dụng OutputCache, nhưng không phải với thông số Vị trí. – Dani

+0

Cảm ơn, nó hoạt động hoàn hảo! – WhatsInAName

+0

@ darin-dimitrov Và làm thế nào bạn có thể làm mất hiệu lực bộ nhớ cache tại một số điểm? (ví dụ: nếu nội dung của một hình ảnh thay đổi) – RazvanR

0

Các bạn đã thử trang trí phương pháp hành động của bạn với OutputCache thuộc tính?

+0

Daniel của Than, khóa là OutputCache whit tham số Vị trí. – Dani

Các vấn đề liên quan