6
rake assets:precompile

application-be2b8c92856ffacee861d9e9c2935e3eのような新しいファイルを作成しますが、application-c730047bc2a5cf3a7​​06aa3a9f998ab77.cssという名前の古いファイルがあります。これ以上使用されることはありません。変更された資産をクリアする方法はありますか?私はすべてのアセットディレクトリを削除したくありません、それは手つかずのすべてのファイルにとってやり過ぎのように見えるからです(そしてそれはgitでは悪く見えます)

4

2 に答える 2

3

実際には、キャッシュされたもの、またはユーザーのブラウザで開いたままのページによって参照される可能性があるため、通常、古いアセットバージョンをいくつか保持する必要があります。アセットを削除する前に、ユーザーが1秒以内にページにアクセスした場合を想像してみてください。HTMLが読み込まれ、その後ブラウザが宣言されたスタイルシートとスクリプトを取得しようとすると、それらはなくなります。これはあなたにとっては当たり前のことかもしれませんが、HTMLコンテンツがキャッシュからのものである場合(たとえば、コンテンツをmemcachingしている場合)、それでも数日後に発生する可能性があります。古いコンテンツは途中でキャッシュされる可能性がありますが、これらのアセットで使用される積極的なキャッシュを使用しても、それに依存することはできません。

したがって、本当に必要なのは、最新バージョンをいくつか保持し、本当に古いものを削除することです。そして、それはまさにbrake assets:cleanそれが行うことであり、必要に応じて、プリコンパイルする前に毎回実行できます。これは、2つのバックアップを保持していることを示すソースです。

その「2」を0に変更できれば、この質問に文字通り答えることができます。その関数のパラメーターですが、その値を変更する方法がわかりません。したがって、構成可能である必要があります。しかし、それにもかかわらず、それはとにかく良い考えではありません。

于 2014-06-04T18:42:15.723 に答える
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
于 2012-04-30T16:32:29.070 に答える