【问题标题】:Stop images from caching in Rails and browser?阻止图像在 Rails 和浏览器中缓存?
【发布时间】:2010-12-27 07:14:15
【问题描述】:

我创建了一个图像裁剪工具,我可以单击图像并对其进行裁剪,它将新裁剪的图像保存在旧图像之上,然后重定向回显示图像的原始页面。

但是即使在重定向之后它仍然显示旧图像并且在我刷新页面之前不会显示新图像。

我尝试只使用图像标记并删除图像后的资产时间戳,但它仍然显示旧图像,我还尝试添加元标记以停止浏览器缓存但不起作用。

如何在不刷新页面的情况下解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby browser caching


    【解决方案1】:

    这可能不是最好的方法,但我过去通过简单地使用 JavaScript 将时间戳附加到图像 URL 来解决这个问题:

    http://www.mysite.com/img/some_image.jpg?timestamp=12342312412
    

    下次加载时,时间戳设置为当前时间,并且 URL 不同,因此浏览器对图像进行 GET,而不是使用缓存版本。

    【讨论】:

    • 嗨,kaleb 感谢您的快速回复,所以您的意思是循环浏览所有图像并获取当前日期并附加到结尾?干杯
    • 是的,这就是我所做的(在brasee.com/games/lobby.htm 的棋盘预览图像上)。每 10 秒,我使用 jQuery 更新棋盘图像的 URL,由于 URL 不同,浏览器请求图像而不是使用缓存。
    • Rails 资产助手(image_tag、stylesheet_link_tag 等)会自动执行此操作。
    • 这个解决方案不仅适用于 Ruby,而且几乎适用于任何 Web 语言(我在使用 PHP 时遇到了这个问题)
    【解决方案2】:

    您是否在视图中使用 rails 图像辅助标签:image_tag?

    Rails 会根据图像文件的最后修改日期自动附加时间戳,这很方便,因为当您进行裁剪并写出新图像时它应该会改变。

    文档中的更多信息:http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 2015-12-07
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多