2014-06-30 16 views
7

Tôi đã nghiên cứu lại và thứ tư về vấn đề này, điều này khá đơn giản: Trình duyệt hiện đại (chrome/FF) đang lưu vào bộ nhớ đệm, trang html trong số các trang khác.
Khi bạn phát hành phiên bản mới, góc sẽ NHẬN các mẫu này. Tuy nhiên, vì trình duyệt phân phối phiên bản bộ nhớ cache của các trang này chứ không phải phiên bản cập nhật mới.Ngăn chặn bộ nhớ cache của trình duyệt các mẫu góc

Tôi đã đọc khoảng 2000 bài viết về cách đạt được điều này .. Không có thẻ "meta" nào hoạt động cho tôi .. (ví dụ: Using <meta> tags to turn off caching in all browsers?) Điều duy nhất hoạt động là quản lý thủ công các phiên bản của tệp bằng cách thêm một số giá trị param http://bla.com?random=39399339. Tuy nhiên điều này thực sự gây phiền nhiễu và cực kỳ khó khăn để duy trì nếu "xóa bộ nhớ đệm" chỉ thỉnh thoảng cần thiết (chủ yếu là giữa các phiên bản).

Có trình duyệt cơ hội nào không cung cấp cách đơn giản, được kiểm soát để "xóa bộ nhớ cache" theo cách thủ công hay không. Hoặc trên máy chủ hoặc cách khách hàng?

P.S. Mẫu góc giúp việc quản lý trở nên khó khăn hơn.

+0

Gắn thêm số/băm/dấu thời gian ngẫu nhiên vào cuối tập tin là cách tôi đã làm nó và tôi đồng ý rằng nó rất khó chịu. Hoặc bạn có thể đặt tiêu đề bộ nhớ đệm khi máy chủ của bạn phục vụ các tệp để chúng không bao giờ được lưu trong bộ nhớ cache – rob

+0

Con đường nào bạn chọn để giải quyết vấn đề này? – Georgy

Trả lời

0

Đây là một câu hỏi với rất nhiều câu trả lời, và nó phụ thuộc vào máy chủ của bạn, vv ...

file
  • thường HTML không được cache
  • AngularJS lưu trữ các mẫu sau khi đã gọi điện cho họ, bằng cách sử dụng $ dịch vụ templateCache (trong thời gian chạy ứng dụng)
  • Bạn có thể sử dụng html2js với grunt hoặc gulp để biên dịch mẫu của mình trong một tệp JavaScript
  • Rất nhiều người không phụ thuộc vào bộ nhớ đệm của khách hàng, etags, v.v ... và thêm phiên bản, băm, hậu tố và/hoặc tiền tố để resourc tĩnh es uri
+1

Thật không may, các tệp HTML tĩnh ** là ** thường được lưu trong bộ nhớ cache. – mirabilos

0

tôi đang sử dụng bộ chặn. nếu yêu cầu bao gồm chính xác đoạn url (đường dẫn đến mẫu), tôi đặt tiêu đề "Cache-Control": "no-cache, phải xác nhận lại"

$httpProvider.interceptors.push(function($q,ngToast) { 

     return { 
      request: function(config){ 
       if(config.url.includes('some_url_to_your_template')){ 
        Object.assign(config.headers,{"Cache-Control": "no-cache, must-revalidate"}); 

       } 

       return config; 
      } 
     } 
}) 
Các vấn đề liên quan