Dar*_*use 20 ruby performance gzip ruby-on-rails pagespeed
我在这里发了一个类似的问题
但我决定放弃这项服务,因为我无法让它发挥作用.
我在我的网站上运行了PageSpeed Insights来确定我网站的速度.
我收到的最重要的建议是启用压缩.
Compressing resources with gzip or deflate can reduce the number of bytes sent over the network.
Enable compression for the following resources to reduce their transfer size by 191.2KiB
(74% reduction).
Run Code Online (Sandbox Code Playgroud)
我按照本网站上的说明操作
https://developers.google.com/speed/docs/insights/EnableCompression
它说要查看有关如何启用压缩的Web服务器的文档:
我用这个网站找出了我的网络服务器
http://browserspy.dk/webserver.php
事实证明我的网络服务器是WEBrick.
PageSpeed Insights页面仅列出以下3个服务器
Apache: Use mod_deflate
Nginx: Use ngx_http_gzip_module
IIS: Configure HTTP Compression
Run Code Online (Sandbox Code Playgroud)
我搜索了有关WEBrick服务器的gzip压缩文档,但找不到任何东西.
我已经搜索了如何在Rails中启用压缩,但找不到任何东西.这就是我在这里问的原因.
我尝试过使用Rack Zippy,但放弃了它.
现在,我甚至不知道从哪里开始.我的第一步是找出我应该做的事情.
编辑
我按照艾哈迈德的建议使用Rack :: Deflator
我确认通过跑步得到了它
rake middleware
=> use Rack::Deflator
Run Code Online (Sandbox Code Playgroud)
然后
git add .
git commit -m '-'
git push heroku master
Run Code Online (Sandbox Code Playgroud)
不幸的是,PageSpeed仍然说它需要压缩.我通过进入开发者工具<<网络设置并刷新页面确认了这一点.每个资源的大小和内容几乎相同,这意味着文件不会被压缩.
我的一个文件有问题吗?
谢谢您的帮助.
这是我的完整config/application.rb文件
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module AppName
class Application < Rails::Application
config.middleware.use Rack::Deflater
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
config.exceptions_app = self.routes
config.cache_store = :memory_store
end
end
Run Code Online (Sandbox Code Playgroud)
如果有问题,源可能在那边,对吗?
我需要安装平衡器宝石吗?
Ahm*_*med 32
启用压缩
将其添加到config/application.rb:
module YourApp
class Application < Rails::Application
config.middleware.use Rack::Deflater
end
end
Run Code Online (Sandbox Code Playgroud)
资料来源:http://robots.thoughtbot.com/content-compression-with-rack-deflater
Nat*_*teQ 16
Rack::Deflater如果你使用insert_before(而不是"使用"),将它放在中间件堆栈的顶部附近,在任何其他可能发送响应的中间件之前,应该工作..use将它放在堆栈的底部.在我的机器上,最顶级的中间件是Rack::Sendfile.所以我会用:
config.middleware.insert_before(Rack::Sendfile, Rack::Deflater)
Run Code Online (Sandbox Code Playgroud)
您可以通过rake middleware命令行按加载顺序获取中间件列表.
注意:insert_before与中间件机架中使用的良好链接
根据作者的说法Rack::Deflater,它应该放在ActionDispatch::StaticRails 应用程序的后面。原因是,如果您的应用程序还提供静态资产(例如在 Heroku 上),则当从磁盘提供资产时,它们已经被压缩。在之前插入它只会导致尝试Rack::Deflater重新压缩这些资源。因此作为性能优化:
# application.rb
config.middleware.insert_after ActionDispatch::Static, Rack::Deflater
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15816 次 |
| 最近记录: |