2011-10-19 20 views

Trả lời

7

Điều này có thể đảm bảo rằng trang/hình ảnh/bất kỳ thứ gì không được lấy từ bộ nhớ cache của người dùng. Nếu liên kết khác nhau mỗi lần thì trình duyệt sẽ nhận được liên kết từ máy chủ thay vì từ bộ nhớ cache, đảm bảo đó là phiên bản mới nhất.

Cũng có thể theo dõi tiến trình của mọi người thông qua trang web. Giải thích tốt nhất với một câu chuyện nhỏ:

  1. Một người dùng truy cập example.com. Tất cả các liên kết được đưa ra cùng một số ngẫu nhiên (giả sử 4).
  2. Người dùng mở liên kết trong cửa sổ/tab mới và liên kết là page2.php? Rnd = 4. Tất cả các liên kết trong trang này được cung cấp số ngẫu nhiên 7.
  3. Người dùng có thể nhấp vào liên kết tới page3.php từ tab gốc hoặc tab mới và phần mềm phân tích trên máy chủ có thể biết cái nào rnd = 4 hoặc rnd = 7.

Tất cả những gì chúng tôi có thể làm là gợi ý khả năng. Không có lý do tiêu chuẩn nào để đặt rnd = trong URL và chúng tôi không thể biết động cơ của nhà thiết kế trang web mà không thấy phần mềm máy chủ.

4

Nó hầu như luôn luôn cho bộ nhớ cache-busting.

6

Internet Explorer và các trình duyệt khác sẽ đọc URL hình ảnh, tải xuống hình ảnh và lưu trữ trong bộ nhớ cache.

Nếu ứng dụng của bạn sẽ cập nhật hình ảnh thường xuyên và do đó bạn muốn người dùng của mình không nhìn thấy hình ảnh được lưu trong bộ nhớ cache, URL cần phải là duy nhất mỗi lần.

Do đó, việc thêm chuỗi ngẫu nhiên đảm bảo điều này sẽ là duy nhất và được tải xuống bộ nhớ cache mỗi lần.

2

Như đã được đề xuất bởi những người khác. Loại hành vi này thường được sử dụng để tránh các vấn đề về bộ nhớ đệm khi bạn đang gọi một trang trả về dữ liệu nội dung động.

Ví dụ: giả sử bạn có trang nhận một số thông tin người dùng hiện tại, chẳng hạn như "mysite.com/CurrentUserData". Bây giờ trên cuộc gọi đầu tiên đến trang này, dữ liệu người dùng sẽ được trả lại như mong đợi, nhưng tùy thuộc vào cài đặt thời gian và bộ nhớ đệm, cuộc gọi thứ hai có thể trả lại cùng một dữ liệu - mặc dù dữ liệu dự kiến ​​có thể đã được cập nhật.

Lý do chính để lưu vào bộ nhớ cache là tất nhiên để tối ưu hóa tốc độ của yêu cầu thường xuyên. Nhưng trong trường hợp không muốn điều này, việc thêm một giá trị ngẫu nhiên làm tham số chuỗi truy vấn được biết là một giải pháp được sử dụng rộng rãi.

Tuy nhiên, có nhiều cách khác để giải quyết vấn đề này. Ví dụ nếu bạn đang thực hiện một yêu cầu Ajax với javascript/JQuery. Bạn có thể thiết lập bộ nhớ cache để sai trong cuộc gọi của bạn ...

$.ajax({url: 'page.html', cache: false}); 

bạn cũng có thể thay đổi nó cho tất cả các cuộc gọi trên trang tải tài liệu với ...

$.ajaxSetup({cache: false}}); 

Nếu bạn đã làm một ứng dụng MVC, bạn thậm chí có thể vô hiệu hóa bộ nhớ đệm trên các phương pháp hành động kiểm soát với một thuộc tính như vậy ...

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult NonCacheableData() 
{ 
    return View(); 
} 

(nhờ vào một bản sao nhanh chóng và dán từ here)

Tôi dám nói rằng cũng có các thiết lập trong IIS bạn có thể áp dụng để có được cùng một ảnh hưởng - mặc dù tôi đã không được rằng đến nay với điều này được nêu ra.

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