2012-04-10 13 views
1

Sagen wir, ichGORM (Grails) - Cache-Blob Bild oder etwas anderes

class Profile{ 
    String name 
    byte[] logo 
} 

und eine Steuerung eines Domain-Klasse:

class ImageController { 
    def renderImage ={ 
     def image = Profile.get(params.id).logo 
     if (image) { 
      response.setContentLength(image.length) 
      response.getOutputStream().write(image) 
     } else { 
      response.sendError(404) 
     }  
    } 
} 

und ein gsp:

<img width="48" 
     height="48" 
     src="${createLink(controller: 'image', action: 'renderImage', id: 1)}"> 

Ok so weit so gut. Das Bild ist gut und ich bin glücklich. Da das GSP-Snippet jedoch Teil meines Hauptlayouts ist, wird das Bild jedes Mal neu gerendert, wenn ich eine Seite neu lade.

Meine Frage: Gibt es eine Möglichkeit, dieses Bild (blob mysql) zwischenzuspeichern? Ich habe das Caching der zweiten Ebene eingeschaltet etc. Aber ich bin mir nicht sicher, ob das Bild zwischengespeichert ist oder nicht. Wie würdest du das machen?

danke.

Antwort

2

Fügen Sie Ihrer Profildomänenklasse static mapping = { cache true } hinzu, um das Caching zu aktivieren. Solange Sie die Profile-Objekte mit get(id) abrufen, wird die zwischengespeicherte Version verwendet. Wenn Sie eine kompliziertere Abfrage verwenden, müssen Sie den Grils mitteilen, dass die Abfrage auch im Cache gespeichert werden kann.

Siehe die Caching section in der Grails-Handbuch. Es kann auch hilfreich sein, hibernate SQL logging zu aktivieren, um zu bestätigen, dass die Objekte zwischengespeichert werden.

+0

ausgezeichnet! Danke! – nemnesic

Verwandte Themen