来自 Rails 4.2 图像缓存的特定图像将不会更新,无论我们尝试什么
Specific image from Rails 4.2 image cache will not update, no matter what we try
我们正在开发中使用 Rails 4.2.x 运行。我们的 header 部分 (app/views/layouts/_header1.html.erb) 中有一个徽标图像。对徽标图像进行了修改,更新后的图像以与原始图像相同的文件名(原始图像被覆盖)上传到服务器(至 app/assets/images)。该图像在 _header1 中带有 link_to 标记。html.erb:
<div id="header1_left">
<div id="logo">
<%= link_to(image_tag("ourlogo.svg"), root_path) %>
</div>
</div>
我们在 CentOS 6 上使用 Passenger 5。当我们在浏览器中查看页面时,一瞬间,您会看到校验和值出现在该图像的位置,然后图像出现。我们已尝试使用任意值更新 _header1.html.erb 以确认我们确实在浏览器中看到了对该部分的更新。无论我们尝试什么,Rails 仍在提供旧图像。我们尝试了以下方法:
- 耙子assets:clean
- 耙子assets:clobber
- railsc,然后Rails.cache.clear
- 手动 rm -rfing /tmp/cache/assets/development
- 正在使用不同的文件名将图像上传到 app/assets/images,然后更新 _header1.html.erb 以使用新文件名
- 在包含 image_tag
的 link_to 调用末尾添加 :"data-no-turbolink" => true
- 在所有浏览器上完全清除缓存,perma-disabling 通过 Firebug 在 Firefox 中缓存,从根本没有访问该站点的新机器访问该站点
- 多次重启httpd
- 完全重新启动 CentOS 服务器
- 使用 Firebug 检查图像元素,并使用 find / -iname "part_of_filename", updatedb / locate, 等
- 将站点完全迁移到新服务器(rsyncing -arvP 所有数据从那个 Rails' 应用程序的目录到另一个使用 passenger 的 CentOS 6 主机,同样的问题出现在新主机上)
确认在 config/environments/development.rb 中设置了以下内容:
config.action_controller.perform_caching = false
config.cache_store = [:null_store]
config.cache_classes = false
有人知道问题出在哪里吗?文件名是正确的,我们反复确认文件 app/assets/images/ourlogo.svg 是正确的文件。这还能缓存在哪里?会不会是涡轮链接?会不会是乘客?它甚至可以是apache吗?
终于,我们解决了这个问题。事实上,它确实不是 Rails 缓存问题,而是图像本身(显然)受到各种机器字体设置影响的问题。我们的设计师将图像转换为矢量格式,现在一切正常。非常感谢大家的帮助和反馈。希望此 post 中列出的各种步骤可以帮助未来的 Rails 4.2 开发人员解决缓存清除问题,因为我们用尽了几种可能的途径来解决这个问题。
我遇到了同样的问题,rake assets:clean
成功了。
我们正在开发中使用 Rails 4.2.x 运行。我们的 header 部分 (app/views/layouts/_header1.html.erb) 中有一个徽标图像。对徽标图像进行了修改,更新后的图像以与原始图像相同的文件名(原始图像被覆盖)上传到服务器(至 app/assets/images)。该图像在 _header1 中带有 link_to 标记。html.erb:
<div id="header1_left">
<div id="logo">
<%= link_to(image_tag("ourlogo.svg"), root_path) %>
</div>
</div>
我们在 CentOS 6 上使用 Passenger 5。当我们在浏览器中查看页面时,一瞬间,您会看到校验和值出现在该图像的位置,然后图像出现。我们已尝试使用任意值更新 _header1.html.erb 以确认我们确实在浏览器中看到了对该部分的更新。无论我们尝试什么,Rails 仍在提供旧图像。我们尝试了以下方法:
- 耙子assets:clean
- 耙子assets:clobber
- railsc,然后Rails.cache.clear
- 手动 rm -rfing /tmp/cache/assets/development
- 正在使用不同的文件名将图像上传到 app/assets/images,然后更新 _header1.html.erb 以使用新文件名
- 在包含 image_tag 的 link_to 调用末尾添加 :"data-no-turbolink" => true
- 在所有浏览器上完全清除缓存,perma-disabling 通过 Firebug 在 Firefox 中缓存,从根本没有访问该站点的新机器访问该站点
- 多次重启httpd
- 完全重新启动 CentOS 服务器
- 使用 Firebug 检查图像元素,并使用 find / -iname "part_of_filename", updatedb / locate, 等
- 将站点完全迁移到新服务器(rsyncing -arvP 所有数据从那个 Rails' 应用程序的目录到另一个使用 passenger 的 CentOS 6 主机,同样的问题出现在新主机上)
确认在 config/environments/development.rb 中设置了以下内容:
config.action_controller.perform_caching = false config.cache_store = [:null_store] config.cache_classes = false
有人知道问题出在哪里吗?文件名是正确的,我们反复确认文件 app/assets/images/ourlogo.svg 是正确的文件。这还能缓存在哪里?会不会是涡轮链接?会不会是乘客?它甚至可以是apache吗?
终于,我们解决了这个问题。事实上,它确实不是 Rails 缓存问题,而是图像本身(显然)受到各种机器字体设置影响的问题。我们的设计师将图像转换为矢量格式,现在一切正常。非常感谢大家的帮助和反馈。希望此 post 中列出的各种步骤可以帮助未来的 Rails 4.2 开发人员解决缓存清除问题,因为我们用尽了几种可能的途径来解决这个问题。
我遇到了同样的问题,rake assets:clean
成功了。