【问题标题】:gzip assets in Sinatra appSinatra 应用程序中的 gzip 资产
【发布时间】:2013-05-29 11:58:22
【问题描述】:

我一直在读到,使用 gzip 压缩资源会提高网站的性能。在 Sinatra 应用程序中似乎有很多方法可以做到这一点,所以我想确认最有效和最容易理解的方法。

我遇到过

use Rack::Deflater

在运行应用程序之前应该放在我的 config.ru 文件中,所以在我的例子中

require './david'
use Rack::Deflater
run Sinatra::Application

是吗?就这么简单吗,补充一下,我知道这会压缩我所有的静态资产,包括我的图片,但这些都是从 CDN 提供的,所以会有什么不同吗?

感谢 Ant 的帮助

谢谢

【问题讨论】:

  • 如果您的资产不是从您的 sinatra 应用程序提供的,他们将不会获得 gzip
  • 是的,我是这么认为的,我想 gzip 的 css 和 js,我不担心图像
  • 别忘了不要将 gzip 用于二进制数据和图片的developers.google.com/speed/docs/best-practices/…

标签: ruby performance sinatra gzip assets


【解决方案1】:

就是这么简单(不是很好:) 但是如果你想检查一下,然后查看Content-Encoding 响应标头,它应该是gzip。在 webkit 浏览器中,它位于“网络”下的开发人员工具中,然后选择资源,例如 app.min.css 和“标题”选项卡。

以下博客文章中提供了一种测试方法:

http://artsy.github.io/blog/2012/02/24/10x-rack-and-rails-output-compression-with-rack-deflater/

我将规范修改为shared examples,所以我可以将它们添加到我真正想检查的地方:

shared_examples "Compressed pages" do
  subject { last_response.headers }
  its(["Content-Encoding"]) { should be_nil }
  context "After compression" do
    before do
      get page
      @etag = last_response.headers["Etag"]
      @content_length = last_response.headers["Content-Length"]
      get page, {}, { "HTTP_ACCEPT_ENCODING" => "gzip" }
    end
    its(["Etag"]) { should == @etag }
    its(["Content-Length"]) { should_not == @content_length }
    its(["Content-Encoding"]) { should == "gzip"}
  end
end

我的主要规范是这样使用它的:

  describe "Public pages" do

    describe "Home page", :type => :request do
      let(:page) { "/" }
      it_behaves_like "Compressed pages"

it_behaves_like "Compressed pages" 将运行该共享示例并检查它是否具有正确的标题等。

【讨论】:

  • 感谢您的澄清,也感谢您提供有关测试的额外信息 :) 使用 Rails 以外的其他东西可以让您意识到它对您有多大帮助,但是了解这些事情也很好更多
  • @Richlewis 是的,Rails 做了很多事情,但是 Sinatra 非常轻量级和灵活,一旦你进入它,你就不会错过 Rails :)
  • 在 Sinatra 中使用模型和模块有什么好的资源吗?我真的需要跟上进度
  • @Richlewis 我使用 Sequel,但我知道很多人喜欢使用 Datamapper - 我认为大多数人都会借此机会避免使用 ActiveRecord! :) 在 Sinatra 中使用 ORM 的一些最好的东西就在 StackOverflow 上。模块内容在文档hereherehere 中得到了很好的介绍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2023-03-27
  • 2017-09-16
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多