Có ai biết giá trị thông báo tài sản chính xác được tính như thế nào không? Nếu tôi có hai tệp JS chứa nhiều tập lệnh JS khác nhau thì mỗi tệp sẽ duy trì cùng một băm thông báo nếu không có tập lệnh bên trong nào bị thay đổi? Hoặc là một giá trị tiêu hóa mới được tính toán mỗi khi các tài sản: hoạt động biên dịch trước được chạy?Giá trị đường dẫn nội dung đường ray và giá trị tiêu hóa
Trả lời
thu thập từ rails guides
Khi một tên tập tin là duy nhất và dựa trên nội dung của nó, tiêu đề HTTP có thể được thiết lập để khuyến khích lưu trữ ở khắp mọi nơi (dù ở CDN, tại ISP, trong thiết bị mạng, hoặc trong web trình duyệt) để giữ bản sao của riêng họ về nội dung. Khi nội dung được cập nhật, dấu vân tay sẽ thay đổi. Điều này sẽ khiến khách hàng ở xa yêu cầu bản sao mới của nội dung . Điều này thường được gọi là bộ nhớ cache busting.
Kỹ thuật mà Rails sử dụng để lấy dấu vân tay là chèn một hàm băm của nội dung vào tên, thường là ở cuối. Ví dụ một CSS tập tin global.css có thể được đổi tên với một MD5 tiêu hóa nội dung của nó
Câu trả lời được chấp nhận là không hoàn toàn đúng. Chúng tôi xây dựng tài sản tĩnh cho các máy chủ dàn dựng, demo và sản xuất của chúng tôi và cùng một nội dung được cung cấp các giá trị thông báo khác nhau trong từng trường hợp.
Hóa ra môi trường Rails cũng đang được xem xét. Sprockets tạo ra tiêu hóa như sau:
# Sprockets::Environment::initialize
@digest_class = ::Digest::MD5
# Sprockets::Base::digest
@digest ||= digest_class.new.update(VERSION).update(version.to_s)
# Sprockets::Base::file_digest(path)
digest.file(path.to_s)
# Sprockets::Asset::initialize
@digest = environment.file_digest(pathname).hexdigest
Rails móc vào sprockets như sau:
# Sprockets::Railtie
app.assets = Sprockets::Environment.new(app.root.to_s) do |env|
env.version = ::Rails.env + "-#{config.assets.version}"
...
end
Vì vậy, đường ray đang tạo ra một môi trường sprockets rằng có một phiên bản tương ứng với môi trường Rails, và sprockets sử dụng phiên bản khi tạo lớp thông báo.
- 1. đường ray select_tag giá trị đã chọn
- 2. Định tuyến đường ray: Cung cấp giá trị mặc định cho người trợ giúp đường dẫn
- 3. Thêm thư mục vào đường dẫn đường dẫn nội dung?
- 4. Đặt đường dẫn có giá trị biến môi trường
- 5. Đường dẫn/đường dẫn kẹp giấy sử dụng các giá trị của một đối tượng
- 6. Đường ray: So sánh giá trị cũ và giá trị mới trong quá trình xác nhận chỉnh sửa
- 7. rails3 đường dẫn nội dung và va chạm tệp
- 8. Đường ray sẽ không tải đường ống nội dung
- 9. ASP.NET MVC Url.Action và giá trị tên tuyến đường
- 10. Đường ray/Đường dẫn nội dung: Tự động liệt kê các nội dung được bao gồm trong tệp kê khai
- 11. Đường dẫn nội dung đường ray: Cách tiêu chuẩn để bao gồm tất cả/nhà cung cấp/tài sản/javascripts /?
- 12. Đường dẫn nội dung đường ray trên dàn dựng: vân tay chính xác nhưng 404ing
- 13. Thêm đường dẫn nội dung trong công cụ có thể gắn kết đường ray?
- 14. Đường ray: đường dẫn nội dung mới cho PDF không được nhận dạng
- 15. API Web nhận giá trị tuyến đường
- 16. Đường ray 3.1 đường dẫn nội dung - thiếu tệp từ công khai/nội dung - tại sao đây không phải là mặc định?
- 17. Thuộc tính 'nội dung' để kế thừa giá trị nút
- 18. Đường ray 3.1 đường ống nội dung không được rút ngắn
- 19. Nâng cấp từ đường ray 3.1.3 lên đường ray 3.2.1. Lỗi với nội dung
- 20. cách đặt giá trị mặc định thành cột trong đường ray trong khi tạo di chuyển
- 21. Giá trị loại nội dung trong yêu cầu HTTP khi tải lên nội dung?
- 22. Đường dẫn trợ giúp động đường ray
- 23. đường dẫn url form_tag đường ray
- 24. đặt giá trị ScriptManager AsyncPostBackTimeout trên trang nội dung ASP.NET
- 25. đường ray update_attributes trả về false khi cố cập nhật giá trị db
- 26. Đặt ký tự Unicode trong giá trị nội dung CSS
- 27. Nội dung của giá trị cookie ASP.NET FormsAuthentication là gì?
- 28. Tìm đường dẫn trong cây tìm kiếm nhị phân tổng hợp thành giá trị đích
- 29. cách tắt đường dẫn nội dung trên heroku?
- 30. ruby trên đường ray 3.1 di chuyển .swf sang đường ống nội dung?
Vì vậy, thao tác md5_file() đơn giản được thực hiện trên tệp cuối cùng sau khi tất cả quá trình hợp nhất và nén được thực hiện? Giá trị md5 đó kết thúc là thông báo cho tệp đúng không? – matsko
Theo tài liệu, vâng. Bạn có thể tham khảo [hướng dẫn khác] (http://guides.rubyonrails.org/asset_pipeline.html#in-production) để biết thêm chi tiết. – Tomato