2011-11-23 30 views
11

Tôi đang rách tóc ra khỏi bộ nhớ đệm của Internet Explorer 9.Internet Explorer 9 bỏ qua không có tiêu đề bộ nhớ cache

Tôi đặt một loạt cookie từ tập lệnh perl tùy thuộc vào giá trị chuỗi truy vấn. Các cookie này chứa thông tin về nhiều thứ khác nhau trên trang như biểu ngữ và màu sắc.

Vấn đề tôi gặp phải là trong IE9 nó sẽ luôn luôn, LUÔN LUÔN, sử dụng bộ nhớ cache thay vì sử dụng các giá trị mới. Chuỗi các sự kiện chạy như thế này:

  1. Visit www.example.com/?color=blue
  2. Perl script bộ cookies, Tôi đang chuyển hướng trở lại www.example.com
  3. Màu sắc màu xanh, mọi thứ đều như mong đợi.
  4. Visit www.example.com/?color=red
  5. Các cookie được đặt, chuyển hướng, màu sắc thiết lập để màu đỏ, tất cả là bình thường
  6. lại lần www.example.com/?color=blue
  7. Perl Script chạy, cookie được thiết lập lại (tôi đã xác nhận điều này) nhưng! IE9 truy xuất tất cả các tài nguyên từ bộ nhớ cache, do đó, chuyển hướng tất cả các màu của tôi vẫn còn màu đỏ.

Vì vậy, mỗi khi tôi truy cập vào một URL mới, tài nguyên này đều có tài nguyên mới, nhưng mỗi khi tôi truy cập vào URL đã truy cập trước đó, nó đều lấy chúng từ bộ nhớ cache.

Các thẻ meta sau đang trong < đầu > của example.com, mà tôi nghĩ sẽ ngăn cản bộ nhớ cache từ đang được sử dụng:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="EXPIRES" CONTENT="0"> 

Đối với những gì nó có giá trị - Tôi cũng đã thử <META HTTP-EQUIV="EXPIRES" CONTENT="-1">

IE9 dường như bỏ qua TẤT CẢ các chỉ thị này. Lần duy nhất tôi có được thành công cho đến nay trong trình duyệt đó là sử dụng các công cụ nhà phát triển và đảm bảo rằng nó được đặt theo cách thủ công thành "Luôn làm mới từ máy chủ"

Tại sao IE bỏ qua các tiêu đề của tôi và làm cách nào để kiểm tra máy chủ mỗi lần?

+0

bạn đã xem http://stackoverflow.com/questions/4360283/http-cache-control chưa? thử riêng tư? –

+0

OK Tôi vừa thử đặt nó thành CONTENT = "TƯ NHÂN" và đang gặp vấn đề tương tự. –

+2

Hãy thử thực hiện cuộc gọi API phía máy khách ... trong trường hợp này ngay cả "Luôn làm mới từ máy chủ" không hoạt động. Tôi hiện có IE9 gần như nhiều như tôi ghét IE6 – Vroomfundel

Trả lời

3

thử gửi sau như HTTP Headers (không meta tags):

Cache-Control: private, must-revalidate, max-age=0 
Expires: Thu, 01 Jan 1970 00:00:00 
7

Đó là những không tiêu đề. Chúng là các phần tử <meta>, là phần tử thay thế cực kỳ kém cho tiêu đề HTTP. Tôi đề nghị bạn đọc Mark Nottingham's caching tutorial, nó đi vào chi tiết về điều này và về các chỉ thị bộ nhớ đệm nào phù hợp để sử dụng.

Ngoài ra, bỏ qua bất kỳ ai yêu cầu bạn đặt bộ nhớ đệm thành private. Điều đó cho phép lưu vào bộ nhớ cache trong trình duyệt - nó cho biết "điều này có thể được lưu vào bộ nhớ cache miễn là bạn không chuyển tiếp nó tới một ứng dụng khách khác".

0

Sẽ chỉ đề cập đến rằng tôi gặp sự cố khi tìm kiếm rất giống như thế này. Nhưng tôi đã thử IE9 trên một máy tính khác và không có vấn đề gì. Sau đó chuyển đến Tùy chọn Internet -> Chung -> Xóa và xóa mọi thứ khôi phục hành vi đúng.Xóa bộ nhớ cache không đủ.

0

Các mục duy nhất mà HTML5 chỉ định là kiểu nội dung, kiểu mặc định và làm mới. See the spec.

Bất cứ điều gì khác có vẻ hoạt động chỉ là do ân huệ của trình duyệt và bạn không thể phụ thuộc vào nó.

-2

johnstok là chính xác. Nhập vào mã đó sẽ cho phép nội dung cập nhật từ máy chủ và không chỉ làm mới trang.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8; Cache-Control: no-cache" /> 

đặt dòng mã này vào phần của bạn nếu bạn cần có mã trong mã asp và nó sẽ hoạt động.

+0

Anthony

2

Tôi không biết điều này có hữu ích cho bất kỳ ai hay không, nhưng tôi đã gặp sự cố tương tự trên trang web phim của tôi (crosstastemovies.com). Bất cứ khi nào tôi nhấp vào nút "nhận được nhiều phim hơn" (truy xuất một loạt phim ngẫu nhiên mới để xếp hạng), IE9 sẽ trả lại cùng một trang và bỏ qua phản hồi của máy chủ ...: P

Tôi phải gọi một cách ngẫu nhiên biến để giữ cho IE9 không làm điều này. Vì vậy, thay vì gọi "index.php? Location = phúmovies" Tôi đã đổi nó thành "index.php? Location = phúmovies & rand = RANDOMSTRING".

Mọi thứ đều ổn.

Chúc mừng

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