使用 mogrify 调整大小后在资产中找不到图像

Image not found in assets after resize using mogrify

我遇到了一个非常奇怪的错误。

我的网站运行完美,但我不得不调整着陆页上的一些图片,因为它们太重了,它们会减慢我的页面速度。

我使用 mogrify 调整了 app/assets/images

中所有图像的大小
mogrify -resize 50% *.jpg

调整大小后,我使用

删除了所有资产
rake assets:clean

然后

rake assets:precompile

重新编译资产管道中的图像,但是现在图像不再显示,即使我清除了浏览器的缓存。如果我相应地更改图像的名称并在我看来,一切正常。

更新:

问题是当我调整图像大小时,编译的文件名改变了。这是我尝试访问图像时遇到的错误:

No route matches [GET] "/assets/image-small-05a31635ef97c8b04eaeb6e5f3f9053f1146ed1cae0796aed876f086f934cf0b.jpg"

但是在资产路径中,同一个文件的名称是:

image-small-a8859704b69e18b59af2760e724b27560d1d40a597595308241845f563197a27.jpg

所以,随机部分在文件系统上改变了,但在网页上没有改变。

感谢您的帮助

我假设您正在使用正确的资产路径助手等,因为您的资产在移动之前已成功显示。

请确保没有引用您资产的过时版本的缓存。

  • 删除网络浏览器的缓存(强制重新加载也一样)
  • 使用rake assets:clean
  • 删除已经预编译的资源
  • 使用 rake tmp:clear
  • 删除服务器上的所有元数据
  • 使用rake cache:clear
  • 删除Rails.cache(例如内存缓存)中的条目

停止(并重新启动)任何 Ruby 预加载器,如 Zeus,如果您正在使用一个预加载器。

最后,重新启动您的 Rails 应用程序服务器。

这应该会让您的资产重新上线。