如何在jekyll生成的站点中设置asset_host?

时间:2015-03-03 21:46:11

标签: ruby-on-rails jekyll cdn

我有一个rails 4应用程序正确使用 config.action_controller.asset_host =" xxxxxxx.cdn.com" 来渲染资产网址指向CDN。

该应用还有一个使用 jekyllrb 的文档网站。现在我希望能够从CDN引用资产,但到目前为止还没有运气。

我无法找到有关如何为doc site设置CDN主机的文档。

我尝试这样的事情:

<img type="image/svg+xml" src="{{ '/docs/images/' | append: page.logo_image  | asset_url}}">

但没有运气,我只是得到图片网址,但没有cdn的东西。我发现的所有内容都是Shoppify链接(我认为也使用Liquid)

任何提示都非常受欢迎!

感谢

1 个答案:

答案 0 :(得分:5)

发现这个:

  

CloudFront的Jekyll配置使我可以轻松地为我的资产提供服务   从CloudFront,我设置了一个自定义的Liquid过滤器:

module Jekyll
  module AssetFilter
    def cdn(input)
      "#{@context.registers[:site].config['cdn']}/#{input}"
    end
  end
end
Liquid::Template.register_filter(Jekyll::AssetFilter)
  

将此保存在Jekyll网站目录根目录的_plugins/cdn.rb中。

     

然后我在我的_config.yml文件中添加了CDN条目。如果我评论这一行,我的   如果我在本地运行Jekyll,资产将从S3(或localhost)提供服务。

cdn: http://cdn.maxmasnick.com
     

每当我想要CDN提供资产时,我都会通过此Liquid过滤器。例如,在我的布局文件中,我有:

     

<link rel="stylesheet" href="{{ "assets/css/frameless.css" | cdn }}" />

来源: http://www.maxmasnick.com/2012/01/21/jekyll_s3_cloudfront/