2015-09-25 12 views
6

Tôi đã thử hai cách khác nhau và cả hai đều không có tác dụng:Làm cách nào để cập nhật tệp tập lệnh của trình duyệt khi cập nhật tệp kê khai nhưng cho phép lưu vào bộ nhớ cache?

1. Cập nhật manifest để trình duyệt thấy có những thay đổi và cập nhật

này cập nhật tất cả các file trừ file JavaScript. Trình duyệt thấy có sự khác biệt, tải xuống mọi thứ (bao gồm các tệp JavaScript) nhưng sử dụng phiên bản được lưu trong bộ nhớ cache của các tệp JavaScript.

2. Gửi tiêu đề no-cache (xem mã bên dưới) để ngăn chặn bộ nhớ đệm của script file

Điều này làm cho trình duyệt để ném ra một lỗi và không còn bộ nhớ cache bất cứ điều gì. Nó nói rằng một lỗi ApplicationCache đã xảy ra.

Mã no-cache:

<filesMatch "\.(js)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
     Header unset ETag 
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
     Header set Pragma "no-cache" 
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </ifModule> 
</filesMatch> 

Trên đây làm cho tất cả các trình duyệt không bộ nhớ cache ứng dụng để sử dụng ngoại tuyến.

Có cách nào khác không?

+0

Lưu ý đầu tiên, bộ nhớ cache của ứng dụng dường như không còn được dùng nữa (nhưng vẫn là giải pháp duy nhất): https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache Làm cách nào để bạn biết rằng trình duyệt tải xuống tập lệnh? Tôi thấy khó tin rằng nó tải thành công nhưng không sử dụng nó. Nó có thể cung cấp trạng thái "304 - Không được sửa đổi". – msoft

Trả lời

1

Tôi không có đủ quan điểm để cho biết đây có phải là thực hành tốt nhất hay không, nhưng bất cứ khi nào nhóm của chúng tôi thực hiện thay đổi Javascript, chúng tôi sẽ tăng biến chuỗi truy vấn ở cuối đường dẫn.

<script type="text/javascript" src="/path/to/script.js?v=10"></script> 

Lưu ý v = 10 ở phần cuối của thuộc tính src. Điều này ngụ ý cho trình duyệt rằng một tệp khác đang được truy xuất và do đó, sẽ làm giảm bộ nhớ cache.

Tôi đã chọn phương pháp này bằng cách làm theo thực tiễn hiện tại của đồng nghiệp.

+0

Đó không phải là giải pháp tồi và tôi cũng tự động cập nhật tệp kê khai (vì nó phải khớp với tệp kê khai) –

Các vấn đề liên quan