【问题标题】:Rails 3.1 & Sprockets & compiled JS filesRails 3.1 & Sprockets & 已编译的 JS 文件
【发布时间】:2011-05-22 08:30:04
【问题描述】:

所以只需试用带有 Sprockets 资产管道的 Rails 3.1-rc1:

我跑rake assets:precompile

我得到 /public/assets 目录和 application.js 文件的 MD5 哈希:

application-266b6b0b4fbd28fc01145d90a4158b2f.js

但问题是这样的:

当我更新我的 JS 并运行 rake assets:precompile 时,我得到了更多的 JS 文件,它不会删除旧的。

我注意到它是如何工作的——浏览器只选择第一个,我必须手动删除旧的。这似乎不像它应该如何工作。

只是一个侧面抱怨:似乎每次我更改某些内容时我都必须运行rake assets:precompile。这很痛苦。

(我想需要一些文档来说明这一切是如何工作的)。

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 sprockets


    【解决方案1】:

    js文件的名字是-.js。

    这样做是为了当您将新版本的应用程序部署到生产服务器时,您的访问者也必须加载新的 js 文件。考虑到当今网络的动态特性,哈希确保他们不会混淆新应用程序和旧缓存 js,这可能会破坏整个应用程序。

    在大多数部署方案中,您会将应用程序放在服务器上的新目录中,并且那里不会有旧的编译 js 文件。

    【讨论】:

    • 好的——这就是我的意思——问题是旧的 JS 文件没有被删除。你是说在开发过程中我每次都必须预编译然后删除旧文件?
    • 在开发过程中你不需要预编译它们。他们直接从应用程序/资产中获得服务。它们被动态编译和服务。您只需在生产环境中对它们进行预编译,就可以减轻在应用程序中一遍又一遍地编译资产的负担。您编译的资产应该由 Nginx 或 Apache 等 http 服务器提供服务。
    • 嗯...好吧 - 发生了一些奇怪的事情。我在我的开发盒上使用 POW,但这并没有发生 - 除非我进行了预编译,否则它不会提供文件。 Firebug 在 application.css 和 application.js 上显示 404。但现在一切正常。也许我只需要重新启动 POW。 (当我重新启动我的盒子时我做了)。感谢您的帮助。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多