image - Rails Assets,可以在生产模式下预编译和非编译吗?
问题描述
一个 Rails 6 应用程序,生产模式。
情况是这样的,我有许多将在视图中引用的图像文件。
有些是我预先准备好的,我可以在生产中使用应用程序预编译和部署这些图像资产。那里没有问题。
但是,应用程序在部署和运行时会不时以临时方式从远程源导入更多图像,这些图像也将在视图中被引用。
所以看起来我会有预编译和非编译图像的混合......感觉不对。
我想我根本无法预编译,并设置
config.assets.compile = true
但是 rails 文档指出不建议在生产模式下这样做。
我确定我不是第一个尝试做这样的事情的人,我想知道我是否忽略了一个久经考验的解决方案?
有任何想法吗 ?提前致谢。
解决方案
如果图像是在运行时获取或编译的,则它们不属于资产管道。管道的重点是简化部署和开发过程,以便在部署时自动编译/优化资产。资产是开发人员关注的 CSS、JS 和图像等文件。
AFAIK Rails 不可能同时使用这两种模式,也不是可取的,因为它会在生产中增加大量开销。
正如评论中提到的,这些图像应该与资产管道分开存储,最好是存储在针对 S3 等文件交付进行优化的云平台中,而不是存储在 Rails 应用程序中。您的应用程序应该只存储这些文件的 URL。
在处理用户文件上传和从远程源导入的方式之间没有重大区别,只是源略有不同。ActiveStorage 和 CarrierWave 等库可以在导入图像时在运行时进行图像转换。
推荐阅读
- javascript - 有什么方法可以根据它们的值(如负/正)隐藏条形吗?
- angular7 - 如何在Angular 7+中获取响应状态403而不是0
- c++ - 在一台 Windows 机器上生成的 pdb 文件是否可以在另一台 Windows 机器上工作
- maven - 在 Azure Repo git 的单个存储库中为子目录设置 maven 管道
- opencv - Opencv plus unity(资产存储插件)
- json - Avro 架构不符合我的 json 数据?
- android - 从浏览器打开 Intent url
- react-native - 混合 JavaScript 移动开发 - Apache Cordova vs Capacitor with Ionic vs NativeScript vs React Native
- ios - SwiftUI 创建列表
- javascript - 如果通过 jquery 动态添加,我的 Html Toggle/Switch 无法正确呈现