Có cách nào để tắt bộ nhớ đệm trình duyệt máy khách cho các trang web cụ thể không?


10

Đây là một câu hỏi bất khả tri của trình duyệt nhưng chúng tôi đang thử nghiệm với IE9.

Một trong những ứng dụng web mà người dùng của chúng tôi truy cập đang được lưu trữ ngẫu nhiên và các thay đổi sẽ không hiển thị khi cần. Không có trang web nào khác có vấn đề này và chúng tôi đã làm việc với nhà cung cấp tuyên bố rằng điều đó không xảy ra với bất kỳ ai khác. Nếu chúng tôi sử dụng thanh công cụ dành cho nhà phát triển và chọn "buộc làm mới từ máy chủ" thì mọi thứ sẽ được cập nhật chính xác.

Thay vì thực sự giải quyết vấn đề, suy nghĩ của chúng tôi là giải quyết vấn đề bằng cách vô hiệu hóa bộ đệm cho trang web cụ thể này. Tuy nhiên, chúng tôi không biết làm thế nào.

Câu trả lời:


10

Cách thích hợp duy nhất để vô hiệu hóa bộ nhớ đệm trình duyệt là bởi các tiêu đề HTTP từ chính ứng dụng web. Chỉ riêng tiêu đề "Kiểm soát bộ đệm" HTTP 1.1 đã đủ cho bất kỳ trình duyệt sau năm 2000 nào. Nhưng để bảo vệ thêm, máy chủ có thể phát ra cả hai tiêu đề HTTP "Kiểm soát bộ đệm" và HTTP 1.0 "Hết hạn" cùng nhau .

Một cách hack'ish nhưng đôi khi thấy cách xử lý vô hiệu hóa bộ đệm là một chuỗi "bộ đệm" trong các URL từ máy chủ. Bộ nhớ cache thường dựa trên dấu thời gian và được thêm dưới dạng chuỗi truy vấn vào mỗi LINK LINK để làm cho URL duy nhất và chỉ được sử dụng một lần. Một cái gì đó như http://example.org/filename.html?cb=<timestamp+random_value>. Điều này là xấu, và không làm bất cứ điều gì mà các tiêu đề HTTP không làm tốt hơn nhiều. Nhưng nó có thể được sử dụng như một bản hack cho một đối tượng hạn chế (fx trên Intranet) hoặc như một lớp bảo vệ bổ sung cùng với các tiêu đề HTTP thích hợp.

AFAIK không có cách nào để vô hiệu hóa có chọn lọc bộ nhớ đệm cho một trang web duy nhất từ trong Internet Explorer. Một giải pháp (phức tạp đẫm máu) có thể là cài đặt bộ đệm Varnish làm bộ đệm trung gian trên mạng LAN của bạn, đặt Internet Explorer sử dụng Varnish làm proxy HTTP và chỉ sử dụng ngôn ngữ VCL trên Varnish để viết lại tiêu đề HTTP cho trang web cụ thể này.

Thành thật mà nói, tôi nghĩ rằng nhà cung cấp của bạn đang làm sai ở đây. Tôi sẽ đề nghị cài đặt Fiddler2 cho IE hoặc Fireorms cho Firefox và xem các tiêu đề HTTP thực tế mà ứng dụng web gửi. Tương quan với hướng dẫn lưu vào bộ nhớ cache của Mark Nottingham mà tôi đã liên kết ở trên - tôi đoán các tiêu đề cho phép lưu vào bộ đệm, hoặc ít nhất là không tuyệt đối cấm lưu vào bộ đệm.


0

Hãy chắc chắn rằng bạn đặt tiêu đề hết hạn thích hợp. Nếu bạn đặt thời gian trong quá khứ, nội dung sẽ không được lưu trữ. Kiểm tra thời gian / ngày trên máy trạm nơi IS9 chạy. Xem thêm: http://www.mnot.net/cache_docs/


0

Nếu bạn không thể sửa đổi nội dung của trang web đang đề cập, bạn có thể sử dụng máy chủ proxy để sửa đổi nội dung trên đường dẫn đến trình duyệt của mình. Điều này sẽ cho phép bạn thay đổi các tiêu đề hết hạn.


0

Nếu trang web cho phép bạn kết nối qua HTTPS, thì tùy thuộc vào trình duyệt của bạn, bạn có thể tắt các trang được mã hóa bộ đệm.

Trong IE, điều này có thể được thực hiện như vậy:

Bạn có thể kiểm tra kỹ cài đặt của IE trong Tùy chọn Internet-> Nâng cao-> Bảo mật-> Không lưu các trang được mã hóa vào đĩa.


Ông yêu cầu một giải pháp bất khả tri trình duyệt.
Mircea Vutcovici

1
@Mircea Đây một giải pháp bất khả tri của trình duyệt. Tôi chỉ cung cấp một ví dụ vô cớ bằng IE. Nhiều trình duyệt khác có tùy chọn tắt SSL bộ đệm, nhưng các cài đặt ở những nơi khác nhau.
JeffG

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-USE-meta-tags.html

Bạn có thể cân nhắc sử dụng các khóa ngẫu nhiên trong thanh URL, điều này cũng sẽ ngăn bộ đệm trong trình duyệt.


Điều này sẽ hoạt động, NẾU GollyJer có khả năng sửa đổi trang web. Tôi tập hợp anh ấy không dựa trên câu hỏi của anh ấy.
JeffG

Nói chính xác, "khóa ngẫu nhiên" không ngăn chặn hiệu quả bộ nhớ đệm. Trình duyệt và bộ đệm ở giữa vẫn có thể lưu trữ phản hồi trên đĩa. Nhưng lần tiếp theo cùng một tệp được yêu cầu, khóa ngẫu nhiên sẽ làm cho URL khác nhau và do đó phiên bản được lưu trong bộ nhớ cache trên đĩa sẽ không được sử dụng. Một đại diện mới sẽ được tải xuống từ máy chủ và có thể được lưu vào bộ nhớ cache. Ngoài ra, thẻ META PRAGMA đã cũ và không nên được sử dụng - khuyến nghị là sử dụng các tiêu đề HTTP Expires và Cache-Control.
Jesper M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.