Capistrano, theo mặc định, chạm vào tất cả các file đó coi một 'tài sản'. Như bạn nói, điều này có nghĩa sau mỗi lần triển khai đường ray nghĩ mọi nội dung đã thay đổi và các trình duyệt wil tải xuống phiên bản mới hơn mỗi lần
Bạn có thể tắt tính năng này trong Capistrano bằng cài đặt sau
set :normalize_asset_timestamps, false
Nếu bạn đang sử dụng SVN thì ngày sửa đổi cho tệp của bạn phải phản ánh ngày chúng được sửa đổi lần cuối trong kho lưu trữ của bạn, vì vậy sẽ hoàn hảo.
Nếu bạn đang sử dụng Apache, bạn có thể thêm một cái gì đó như thế này để thực sự làm cho bộ nhớ đệm làm việc cho bạn. Điều này giúp bằng cách yêu cầu trình duyệt dựa vào chỉ thị "Kiểm soát bộ nhớ cache" có nghĩa là nếu nó biết nội dung được lưu trong bộ nhớ cache, nó thậm chí sẽ không làm phiền yêu cầu nó.
#Etags should be based on the file parameters only (default includes INode)
FileETag MTime Size
#Rewrite stuff
RewriteEngine On
#This sets the environment variable (is_versioned) when the URL query string
#looks like ?874353948543 or any string of digits
RewriteCond %{QUERY_STRING} ^[0-9]+$
RewriteRule ^(.*)$ $1 [env=is_versioned:true]
<Directory /deployed-rails-app/public/ >
Options -Indexes FollowSymLinks -MultiViews
AllowOverride None
Order allow,deny
allow from all
#For files, force the browser to rely on cache-control directives and
#Rails asset timestamps by removing Etags and Last-Modified dates
#For all assets that aren't stamped by rails, cache them for ~ 3 hours
Header set "Cache-Control" "max-age=10000"
Header unset Etag
Header unset "Last-Modified"
#For all assets that ARE stamped by rails, cache them for 30 days
Header set "Cache-Control" "max-age=2592000" env=is_versioned
</Directory>
Tôi đã đặt máy chủ sản xuất của mình theo cách này và hiện tại khách truy cập chỉ thực hiện một yêu cầu (Get /) trả về nội dung động và tất cả nội dung (~ 40 - 50) được lưu vào bộ nhớ cache.
Nguồn
2008-10-10 18:21:32
Lưu ý rằng đối với đường ray 3.1 Đường ray sử dụng MD5 thay vì Dấu thời gian, có nghĩa là câu hỏi này không còn relavent nữa. –