在中间人中为视频启用资产管道

Posted

技术标签:

【中文标题】在中间人中为视频启用资产管道【英文标题】:Enabling asset pipeline for videos in middleman 【发布时间】:2022-01-21 12:57:11 【问题描述】:

在我的中间人静态站点中,我的图像、字体和 CSS 正在正确地通过资产管道,并获得它们的指纹后缀(例如 img/logo-3e4a3149.png)。

但是,位于 assets/vid 文件夹中的我的 mp4 文件只是以相同的名称复制,这使得它们在构建和部署时过时(缓存明智)。

在这方面,如何将其他资产类型 (mp4) 配置为像图像一样对待?

【问题讨论】:

【参考方案1】:

好吧,回答我自己的问题,虽然我不确定这是开发人员想要的方法。

    找到了AssetHash 扩展的源代码,提供了一些见解。 发现似乎过时的 configuration documentation 恰好提到了 asset_hash 设置(尽管提到的语法不起作用)。

所以在摆弄它之后,我在我的config.rb 中想出了这个

activate :asset_hash # this was always there
config.asset_extensions << ".mp4"

看起来有点脏,因为中间人配置中的所有其他设置都是使用set :something DSL 优雅地设置的,但至少它有效。

我还注意到这种语法有效:

activate :asset_hash, exts: [".mp4"]

但它会替换出厂设置。

如果有人找到更好的选择,请分享。

【讨论】:

【参考方案2】:

默认情况下,文件扩展名“.mp4”不被视为资产文件,即不在asset_extensions 中列出。 将文件扩展名添加到列表可以解决问题(正如您自己已经弄清楚的那样)。 这样做的选项:

config[:asset_extensions] += %w[.mp4]

# or

config.asset_extensions += %w[.mp4]

# or

activate :asset_hash do |asset_hash|
  asset_hash.exts += %w[.mp4]
end

# or

# Passing `ext:` argument overrides list of file extensions!
activate :asset_hash, exts: %w[.css .png .jpg .jpeg .webp .svg .svgz .js .gif .ttf .otf .woff .woff2 .eot .ico .map .mp4]

【讨论】:

如果只添加一个元素,则可以通过推送&lt;&lt; '.mp4' 替换数组串联+= %w[.mp4]

以上是关于在中间人中为视频启用资产管道的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core 管道模型中间件及管道模拟实现

精:.NET Core 管道模型中间件及管道模拟实现

中间件

资产管道中的路由助手

Django----中间键 在其他语言中,有人叫这个管道 中间件

逐步通过具有中间结果的管道