2012-04-10 84 views
1

比方說,我有一個域類GORM(Grails的) - 高速緩存團塊圖像或別的東西

class Profile{ 
    String name 
    byte[] logo 
} 

和控制器:

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) 
     }  
    } 
} 

和GSP:

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

好吧,這麼好。圖像呈現良好,我很高興。但是,由於gsp片段是我主佈局的一部分,每次重新加載頁面時都會呈現圖像。

我的問題:有沒有辦法來緩存這個圖像(blob mysql)?我有第二級緩存打開等,但我不知道如果圖像緩存或不。你會如何做到這一點?

謝謝。

回答

2

static mapping = { cache true }添加到您的配置文件域類以打開緩存。只要您使用get(id)獲取Profile對象,它將使用緩存版本。如果您使用更復雜的查詢,則需要讓grails知道查詢也可以緩存。

請參閱Grails手冊中的Caching section。另外,打開hibernate SQL logging以確認對象已被緩存會很有幫助。

+0

優秀!謝謝! – nemnesic 2012-04-10 18:01:37