我正在开发一个ror中的一个站点,我已经完成了缓存,但由于图像,它的加载速度很慢。你能说我哪些是最好的方法来解决这个问题,让我的网站变得更快。或任何能帮助我的宝石。
答案 0 :(得分:3)
让我们假设你确定这是问题的图像。如果是这样,您的图像应该由您的网络服务器直接提供(例如,nginx或apache),并且根本不应该涉及RoR。假设是这种情况,你可以做一些事情:
确保图像的尺寸不大于必须显示的尺寸。例如,如果您的站点以300px乘以300px显示图像,请确保您不会意外地下载5000px乘5000px版本,并让浏览器调整大小。 (如果您是通过管理界面上传图片,则Carrierwave或paperclip等宝石可以帮助您调整上传图片的大小。
创建图像时,请确保以适合的方式创建图像(例如,选择正确的类型 - jpg,gif,png-8,png-24,选择合适的质量,等等)。使用Photoshop的“Save for Web”功能。
使用像ImageOptim(https://imageoptim.com/)这样的工具无损地缩小图像尺寸
尽可能使用CSS - 例如,如果您使用图像作为背景渐变,或者使用带有发光效果的圆形按钮悬停,请不要。使用CSS。
在适当的时候将图像合并到精灵中(如果你不熟悉那就用谷歌)
不是将图像存储在您自己的服务器上,而是将它们存储在像Amazon S3这样的东西上。或者,使用CDN。
缓存。你提到你已经完成了缓存。不确定你在那里做了什么,但确保你的浏览器在一段合理的时间内缓存图像(如果你使用Ruby on Rails资产管道和指纹图像,浏览器应该能够永久地缓存你的图像)。还要确保你抓住被发送回浏览器的内容。
减少页面上的图像数量。如果你有一大堆图像,你的网站将会很慢 - 没有办法解决它。即使图像很小,对于页面上的每个图像,也需要将单独的请求发送到服务器。时间加起来,没有办法解决这个问题。