【问题标题】:What's the way to clear not used assets?有什么方法可以清除未使用的资产?
【发布时间】:2012-05-10 07:53:40
【问题描述】:
rake assets:precompile

创建新文件,如 application-be2b8c92856ffacee861d9e9c2935e3e,但旧文件名为 application-c730047bc2a5cf3a7​​06aa3a9f998ab77.css。它永远不会再被使用了。有没有办法清除更改的资产?我不想删除所有资产目录,因为对于所有未触及的文件来说,这似乎是一种矫枉过正(而且在 git 中看起来很糟糕)

【问题讨论】:

    标签: ruby-on-rails rake asset-pipeline


    【解决方案1】:

    实际上,您应该通常保留一些旧资产版本,因为它们可能被缓存的内容或在用户浏览器中打开的页面引用。想象一下,如果用户在您清除资产前一秒访问了您的页面。 HTML 被加载,当浏览器随后尝试检索声明的样式表和脚本时,它们就消失了。也许这对您来说是一个极端情况,但如果 HTML 内容来自缓存(例如,您正在缓存内容),它仍然可能在几天后发生。旧内容可能会缓存在中间的某个地方,但即使使用这些资产使用的激进缓存,您也不能依赖它。

    那么,您真正想要的是保留一些最新版本并删除真正旧的东西。这正是brake assets:clean 所做的,如果您愿意,您可以在预编译之前每次运行它。这是the source,显示它保留了 2 个备份。

    如果您可以将“2”更改为 0,它将从字面上回答这个问题。我不确定如何更改该值,尽管它是该函数中的一个参数,因此它应该是可配置的。但无论如何,这无论如何都不是一个好主意。

    【讨论】:

      【解决方案2】:

      文件名不是根据原文件的md5吗?

      这意味着您可以删除整个目录,然后运行rake assets:precompile,由于文件的内容相同,您最终会得到相同的文件名(具有相同的内容)。因此,您的 git status 不会注意到这些“新”文件,因为它们与其存储中已经存在的文件相同。它只会注意到一些文件已被删除。

      例如:

      $ ls
      application-<md5-old>.css
      application-<md5-current>.css
      $ rm *
      $ rake assets:precompile
      $ ls
      application-<md5-current>.css
      $ git status
      deleted: application-<md5-old>.css
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2010-11-28
        • 2016-01-20
        • 2012-05-28
        • 2019-10-09
        • 1970-01-01
        相关资源
        最近更新 更多