【问题标题】:Asset fingerprinting in Play FrameworkPlay 框架中的资产指纹识别
【发布时间】:2012-09-19 22:22:54
【问题描述】:

Rails 提供了一个非常简单的静态资产指纹解决方案。 Play 框架有类似的东西吗?在 Google 上似乎找不到任何东西。

谢谢。

http://guides.rubyonrails.org/asset_pipeline.html

更新:我的公司最终在内部实施了一项。

【问题讨论】:

    标签: playframework playframework-2.0 cdn


    【解决方案1】:

    Play 2.3(目前在 RC1 上)引入了类似 Rails 的资产管道,支持 asset fingerprinting

    【讨论】:

    • Play 2.3 现已发布。 :)
    【解决方案2】:

    你可能想看看新的 require.js 支持[1],在 play 2.1 master 上可用

    [1]https://github.com/playframework/Play20/commit/e3c2ffb0d4779863374c44c5ec1a588a1eca4474

    【讨论】:

    • 嗯,我们目前正在使用 require.js 在我们的 play.1x 应用程序中加载资产。是否使用 require.js 优化器指纹 javascript 文件?
    【解决方案3】:

    Play 框架 2 内置了对 CofeeScriptLESSClosure 的支持,但是它们都不被视为“静态”资源,因为它们是在运行时编译的。

    目前还没有与fingerprint 等效的功能,因此您需要自己编写(可能很短)动作。

    【讨论】:

    • 我的意思是静态的,因为它们不会因每个用户而改变。它们是静态内容,可以利用 CDN 进行优化,指纹有助于确保 CDN 访问这些文件的最新版本。
    【解决方案4】:

    我不确定您如何通过一个答案提到的很短的动作来做到这一点。

    但是您可以像 James Ward 在这里所做的那样创建一个封装的资产控制器: https://github.com/jamesward/play2-cloudfront

    这将只处理使用 CDN 信息装饰链接。然后,您可以获得链接的 MD5 并将其附加到文件名中。因此,如果您有 foo.js,它将是 foo-fp-XXXXXXXXXXXXXX.js"。

    我认为当 CDN 来寻找它时,您必须更改路由文件以将该资产路由到正确的文件。所以路由必须剥离“-fp-XXXXXXXXXXXXXX”中的所有内容并获取文件名和扩展名。

    编辑: 这是 git repo,我有一个示例,说明我们如何在我的公司进行资产指纹识别。 https://github.com/Egraphs/play-assets-improvements

    【讨论】:

    • 自从发布这个答案以来,我实际上已经这样做了,而且效果很好。
    猜你喜欢
    • 1970-01-01
    • 2016-08-13
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多