2013-03-05 20 views
5

Sto creando un sito Web con MVC 4. Per i requisiti del progetto, le immagini vengono memorizzate nel database. Ho una visione che mi legano il modello in cui ho l'ID della immagine che accompagna la storia, poi ho ottenere l'immagine:MVC caching database immagini

Vista:

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

Controller:

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

Con questo e controllandolo con Chrome, ho notato che quando ricarico la pagina, non carica le immagini dalla cache, come altri file come .css o altre immagini caricate dal file system.

C'è un modo per rendere queste immagini memorizzate nella cache? Un saluto e grazie.

risposta

11

Si potrebbe decorare la vostra azione ShowImagen controller con l'attributo [OutputCache]:

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

Grazie, ho provato con OutputCache, ma non con il parametro Location. – Dani

+0

Grazie, funziona perfettamente! – WhatsInAName

+0

@ darin-dimitrov E come si può invalidare la cache ad un certo punto? (ad esempio, se il contenuto dell'immagine viene modificato) – RazvanR

0

Hai provato decorare il vostro metodo di azione con l'attributo OutputCache?

+0

Than's Daniel, la chiave è OutputCache con il parametro Posizione. – Dani

Problemi correlati