[英]How do I cache gravatars in Rails 3.2?
我寫了一個Gravatar助手來在我的學習應用程序中使用。 “ Users#index”操作列出了所有帶有重力的用戶,即使分頁也會花費一些時間。 考慮到以下幾點,有沒有一種方法可以在Rails 3.2中緩存凹印:
無需緩存用戶頁面本身; 確實,我只是希望緩存圖像本身,而不必再次從gravatar.com上獲取它們。
def gravatar_for(user, options = { size: 50 }) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) size = options[:size] gravatar_url = "http://gravatar.com/avatar/#{gravatar_id}.png?s=#{size}" image_tag(gravatar_url, alt: user.name) end
如果您查看源代碼,您將看到SO不會自己進行圖像緩存。 刷新頁面幾次,您可能會看到凹版仍然是最后要加載的元素。
您可以采取一些措施來提高性能:
我的問題是為什么你需要這個? 您正在從外部服務器和用戶瀏覽器放置圖像,並且gravatar.com必須對其進行緩存。 這是存在gravatar的原因,無需開發人員的任何工作即可管理化身。 如果您需要緩存凹印機,那么為什么您真正需要它呢?
緩存整個用戶頁面或緩存圖像URL片段都沒有任何區別,因為仍然可以從Gravatar下載圖像。 Gravatar將其Cache-Control
標頭設置為最長5分鍾,並且您無能為力。
一種可能是將圖像保存到您可以控制響應頭的另一個位置。
但是,在開發過程中您可以做的一件事是不對頁面進行硬刷新。 在某些瀏覽器中, CMD/CTRL + R
或按刷新按鈕將發送帶有Cache-Control:max-age=0
請求標頭,從而使您重新下載所有圖像。 您只需再次訪問該頁面即可進行軟刷新(例如:在地址欄中的url上按Enter鍵),它將不會發送該標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.