Tôi đang phân phát một ứng dụng JavaScript trang qua nginx và khi triển khai phiên bản mới, tôi muốn buộc trình duyệt làm mất hiệu lực bộ nhớ cache JS của họ và yêu cầu/sử dụng phiên bản mới nhất có sẵn. Vì vậy, ví dụ khi tôi thay thế một tệp trên thư mục của máy chủ, có tên my-app-8e8faf9.js
, với một tệp có tên my-app-eaea342.js
, tôi không muốn các trình duyệt kéo my-app-8e8faf9.js
từ bộ nhớ cache của chúng nữa. Nhưng khi không có phiên bản mới có sẵn, sau đó tôi vẫn muốn họ đọc các tài sản từ bộ nhớ cache.Hết hạn bộ nhớ cache của tài sản trong trình duyệt khi thay thế máy chủ tệp bằng dấu vân tay qua nginx
Làm cách nào để đạt được điều này với cấu hình nginx? Đây là cấu hình hiện có của tôi:
server {
listen 80;
server_name my.server.com;
root /u/apps/my_client_production/current;
index index.html;
# ~2 seconds is often enough for most folks to parse HTML/CSS and
# retrieve needed images/icons/frames, connections are cheap in
# nginx so increasing this is generally safe...
keepalive_timeout 10;
client_max_body_size 100M;
access_log /u/apps/my_client_production/shared/log/nginx.access.log;
error_log /u/apps/my_client_production/shared/log/nginx.error.log info;
location/{
try_files $uri $uri/ =404;
gzip_static on;
expires max;
add_header Cache-Control public;
}
# Error pages
error_page 500 502 503 504 /500.html;
}