2014-08-29 13 views
16

tôi đăng một câu hỏi tương tự ở đâyCách bật tính năng nén trong Ruby on Rails?

Serving Compressed Assets in Heroku with Rack-Zippy

nhưng quyết định từ bỏ trên dịch vụ đó, kể từ khi tôi không thể làm cho nó làm việc.

Tôi đã chạy PageSpeed ​​Insights trên trang web của mình để xác định tốc độ trang web của tôi.

Đề xuất quan trọng nhất tôi nhận được là Bật tính năng Nén.

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). 

Tôi đã theo các hướng dẫn trên trang web này

https://developers.google.com/speed/docs/insights/EnableCompression

và nó nói để tham khảo tài liệu cho máy chủ web của bạn trên làm thế nào để kích hoạt tính năng nén:

Tôi đã sử dụng trang web này để tìm ra máy chủ web của tôi

http://browserspy.dk/webserver.php

Hóa ra máy chủ web của tôi là WEBrick.

Các PageSpeed ​​Insights Trang chỉ liệt kê 3 máy chủ sau

Apache: Use mod_deflate 
Nginx: Use ngx_http_gzip_module 
IIS: Configure HTTP Compression 

Tôi đã tìm kiếm tài liệu về nén gzip cho các máy chủ WEBrick nhưng không thể tìm thấy bất cứ điều gì.

Tôi đã tìm kiếm cách bật tính năng nén trong Rails và không thể tìm thấy bất kỳ thứ gì. Đó là lý do tại sao tôi hỏi ở đây.

Tôi đã thử sử dụng Rack Zippy nhưng đã từ bỏ nó.

Ngay bây giờ, tôi thậm chí không biết bắt đầu từ đâu. Bước đầu tiên của tôi, là tìm ra những gì tôi nên làm.

Sửa

Tôi đi theo gợi ý của việc sử dụng rack Ahmed của :: giảm phát

Tôi xác nhận rằng tôi đã có nó bằng cách chạy

rake middleware 
=> use Rack::Deflator 

và sau đó

git add . 
git commit -m '-' 
git push heroku master 

Thật không may PageSpeed ​​vẫn nói rằng nó cần s để được nén. Tôi xác nhận rằng bằng cách đi vào Công cụ dành cho nhà phát triển < < Cài đặt mạng và làm mới trang. Kích thước và nội dung hầu như giống hệt nhau đối với mọi tài nguyên nghĩa là các tệp không được nén.

Có vấn đề gì với một trong các tệp của tôi không?

Cảm ơn sự giúp đỡ của bạn.

Đây là cấu hình/ứng dụng đầy đủ của tôi.rb file

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 

Nếu có vấn đề, nguồn có khả năng ở đó, phải không?

Tôi có cần phải cài đặt đá quý làm lệch hướng không?

Trả lời

29

Enable nén

Thêm nó vào config/application.rb:

module YourApp 
    class Application < Rails::Application 
    config.middleware.use Rack::Deflater 
    end 
end 

Nguồn: http://robots.thoughtbot.com/content-compression-with-rack-deflater

+3

Sau khi chạy lại Tốc độ trang, tôi vẫn nhận được thông báo tương tự mà tôi cần để bật tính năng nén. Ngoài ra, bằng cách sử dụng Tốc độ trang và Mạng, kích thước và nội dung của tôi vẫn hầu như giống hệt nhau. Tôi đánh giá cao phản ứng mặc dù, và cho rằng bạn nhận được phiếu bầu của tôi. Cảm ơn bạn đã dành thời gian – Darkmouse

+10

Có một viên ngọc quý mà bạn có thể thử: https://github.com/romanbsd/heroku-deflater – Ahmed

+0

Tôi vừa định nói rằng đá quý heroku-deflater đã giải quyết được vấn đề của tôi. Vui lòng bỏ qua bài đăng trước của tôi. Cảm ơn bạn đã giúp đỡ. – Darkmouse

11

Rack::Deflater nên có tác dụng nếu bạn sử dụng insert_before (thay vì "sử dụng"), để nơi nó gần đầu ngăn xếp phần mềm trung gian, trước bất kỳ phần mềm trung gian nào khác có thể gửi phản hồi. .use đặt địa điểm ở cuối ngăn xếp. Trên máy tính của tôi, phần mềm trung gian trên cùng là Rack::Sendfile. Vì vậy, tôi sẽ sử dụng:

config.middleware.insert_before(Rack::Sendfile, Rack::Deflater) 

Bạn có thể lấy danh sách các middleware theo thứ tự tải bằng cách làm rake middleware từ dòng lệnh.

Lưu ý: A good link for insert_before vs Use in middleware rack

+0

Tôi đã thêm một liên kết mà tôi tìm thấy liên quan đến việc sử dụng insert_before (thay vì "sử dụng"), để đặt nó gần phía trên cùng của ngăn xếp trung gian. ** Hy vọng bạn ổn với nó ** –