[英]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.