2010-11-16 23 views
15

Tôi có một ứng dụng hoạt động dựa trên Ruby và Sinatra được triển khai trên Heroku.Làm cách nào để đặt Tiêu đề HTTP trong ứng dụng Ruby/Sinatra, được lưu trữ trên Heroku?

Tôi muốn tận dụng lợi thế của bộ đệm ẩn HTTP có sẵn trên Heroku, sử dụng Varnish.

Tôi không chắc cách tốt nhất để đặt tiêu đề là gì và cú pháp chính xác.

Bất kỳ suy nghĩ nào về cách tiếp cận và cú pháp tốt nhất?

before do 
    headers "Content-Type" => "text/html; charset=utf8" 
end 

get '/' do 
    headers['Cache-Control'] = 'public, max-age=600' 

    # SOME STUFF HERE 

    haml :home, {:layout => :layout_minfooter} 

end 

Trả lời

25

trang thường tạo động không có bộ nhớ đệm nên tiêu đề

response.headers['Cache-Control'] = 'public, max-age=300' 

là quyền khởi điểm.

Hãy thử sử dụng một trong các dịch vụ tại "Use a Web-based service" để xem chúng có hiển thị trong tiêu đề HTTPd được gửi lại từ trang web của bạn hay không.

+0

Hình như tôi đã có nó thiết lập một cách chính xác, với các công cụ được liên kết tôi có thể xác nhận điều đó. – Neil

+1

Xử lý các sự cố bộ nhớ đệm là một nỗi đau trong **, cả từ phía máy khách lẫn phía máy chủ. –

+0

Hoạt động tốt, 'curl -I http: // localhost: 4567' để kiểm tra (linux). –

0

Bạn cũng có thể truy cập vào các lĩnh vực tiêu đề của đối tượng phản ứng với cú pháp này:

response['Cache-Control'] = 'public, max-age=600' 
0

Trong Sinatra bạn có thể sử dụng cache_control phương pháp:

get '/' do 
    # Cache for 24 hours 
    cache_control :public, max_age: 86400 

    # Your magic goes here 
end 
Các vấn đề liên quan