在Rails 4应用程序中,我们的主页上有一些大图像(尺寸类似于宽度为2400像素),当然,它们的加载速度非常慢。
加快加载速度的选项有哪些?一种方法是降低其质量=>他们的尺寸=>加载速度更快。
但Rails是否有预先缓存/压缩它们的方法?
谢谢。
答案 0 :(得分:2)
没有" Rails方式"去做这个。无论您使用何种框架/语言,这都是一个问题,最好用content delivery network (aka CDN)
解决答案 1 :(得分:1)
一个好的做法是在最终提交到代码库之前通过ImageOptim运行所有图像。此工具执行无损压缩,这意味着像素不会发生变化,但仍会缩小文件大小。
那不是" Rails"解决方案,但这是我知道减少文件大小的最佳方式(通常大约10%),而不会牺牲任何质量。
答案 2 :(得分:1)
为了让googler对此有所了解,以下是事实:
您遇到的问题是,由于资产是手动添加到Rails的,因此您无法执行pre-processing。如果您想针对不同的环境优化图像,则必须创建不同的图像分辨率,然后使用一些逻辑来定义它们:
<h1>Cute Animals & <br>
Monster Vehicles</h1>
<div id="gallery">
<div class="brick">
<img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwaFZXVzVmMl9ILUU">
</div>
<div class="brick">
<img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwVk1DTEpnR0J6VHc">
</div>
<div class="brick">
<img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwblBHLVEza0hxY2s">
</div>
<!-- and so on ... -->
</div>
然后,您就可以使用辅助方法来定义所需的图像:
- assets
-- images
--- backgrounds
---- original.jpg
---- medium.jpg
---- small.jpg
参考:Get file name and extension in Ruby
这将允许您致电:
#app/helpers/application_helper.rb
class ApplicationHelper
def size size, image
assets_path("#{File.basename(image)}/#{size.to_s}#{File.extname(image)}")
end
end
如果你想让它变得动态,你必须使用CSS并设置背景图像,相应的<%= image_tag size(:original, "backgrounds.jpg") %>
查询根据需要分配不同的图像。
如果您正在谈论上传的图片,那么您最好先了解Paperclip
如何做到这一点:
必须安装ImageMagick 并且Paperclip必须能够访问它。要确保它在您的命令行上运行哪个转换(ImageMagick实用程序之一)。
Paperclip使用ImageMagick将图像分割成不同的大小。然后将它们存储在@media
文件夹中,这就是您在使用时调用/public/system
的原因。
我上面描述的基本上是Paperclip的工作方式,除了自动使用ImageMagick制作不同的图像尺寸