2009-05-12 31 views
5

Một giải pháp sẽ là thêm biến QueryString vào url là một hướng dẫn ngẫu nhiên, nhưng điều đó có vẻ hơi lộn xộn. Có một cài đặt nào đó sẽ ngăn trình duyệt hiển thị phiên bản được lưu trong bộ nhớ cache của trang không?Làm cách nào để ngăn trình duyệt hiển thị phiên bản được lưu trong bộ nhớ cache của một trang?

+0

Thêm biến truy vấn được tạo ngẫu nhiên là một mẹo rất cũ;) – backslash17

Trả lời

9

Bạn có thể thêm một thẻ meta như thế này.

<meta http-equiv="pragma" content="no-cache" /> 
3

ONE aproach sẽ thêm 'Hết hạn hoặc bộ nhớ kiểm soát bộ nhớ cache'.

này đã được chiết xuất từ ​​Yahoo Best Practices (http://developer.yahoo.com/performance/rules.html)

Có hai điều trong quy tắc này:

* For static components: implement "Never expire" policy by setting far future Expires header 
* For dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests 

trình duyệt (và proxy) sử dụng một bộ nhớ cache để giảm số lượng và kích thước của HTTP yêu cầu, làm cho các trang web tải nhanh hơn. Máy chủ web sử dụng tiêu đề Hết hạn trong phản hồi HTTP để cho khách hàng biết một thành phần có thể được lưu trong bộ nhớ cache trong bao lâu. Đây là một tương lai xa Expires header, cho trình duyệt biết phản ứng này sẽ không được cũ cho đến ngày 15 tháng 4, 2010.

Expires: Thu, 15 Apr 2010 20:00:00 GMT 

Nếu máy chủ của bạn là Apache, sử dụng các chỉ thị ExpiresDefault để thiết lập ngày hết hạn tương đối so với ngay hiện tại. Ví dụ này của chỉ thị ExpiresDefault đặt ngày Hết hạn 10 năm kể từ thời điểm yêu cầu.

ExpiresDefault "access plus 10 years" 

Vì vậy, về cơ bản bạn sẽ có thể đặt ngày hết hạn để 'thông báo' trình duyệt đã lưu trong bộ nhớ thành phần đã hết hạn. Do đó trình duyệt sẽ đi và yêu cầu lại trang web.

Giả sử bạn cần điều này để phát triển web, một cách khác là buộc xóa bộ nhớ cache. trên Firefox, điều này có thể được thực hiện thông qua tổ hợp phím CTRL + F5 hoặc CTRL + SHIFT + R.

Hope this helps, Lucas

3

Đặt tiêu đề Bộ nhớ cache-kiểm soát thành không có bộ nhớ cache.

6

Trong các dự án ASP.Net của chúng tôi, chúng tôi tạo một BasePage tất cả các trang khác được kế thừa từ đó. Trong trang cơ sở, chúng tôi có chức năng

Public Sub DisableCaching() 
    With Response 
     .Expires = 0 
     .ExpiresAbsolute = Date.Today.AddDays(-1) 
     .AddHeader("pragma", "no-cache") 
     .AddHeader("cache-control", "no-cache") 
    End With 
End Sub 

Chúng tôi gọi là trên bất kỳ trang nào chúng tôi không muốn lưu trong bộ nhớ cache.

+0

các dòng: 1.-.AddHeader ("cache-control", "no-cache") 2.- .CacheControl = "no-cache" Thực hiện chính xác điều tương tự đang thêm bộ điều khiển bộ đệm tiêu đề với giá trị "no-cache". – backslash17

+0

Bất kỳ cách nào: đây là cách chính xác để làm điều đó trong VB.NET – backslash17

+0

Tôi đã xóa dòng trùng lặp - thx backslash17 –

1

Một giải pháp sẽ có thêm một biến QueryString để url đó là một guid ngẫu nhiên, nhưng điều đó dường như một chút lộn xộn

Tại sao lộn xộn? Đó là cách đáng tin cậy nhất. Nó không phải là cần thiết guid, nó có thể là thời gian hiện tại.

+1

Tôi đồng ý. Đây là một cách khá an toàn để hoàn thành những gì bạn muốn trên một loạt các trình duyệt. Tôi thường chỉ thêm tham số vào chuỗi truy vấn như & nocache = {URLENCODEDDateTime} – JohnFx

+0

Tôi không có ý xúc phạm. Nó không cảm thấy đúng với tôi. – Slim

+0

Một trong những bất lợi lớn là công cụ tìm kiếm có thể xem xét mỗi URL là một trang riêng biệt. ví dụ. chỉ số? guid = 1234 và chỉ mục? guid = 1235 là các URL khác nhau theo như hầu hết các công cụ tìm kiếm có liên quan, ngay cả khi chúng chứa cùng một nội dung chính xác. URL để xác định tài nguyên, tiêu đề là để kiểm soát bộ nhớ đệm. –

2

Hãy thử những điều này:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360)); 
Response.Cache.SetCacheability(HttpCacheability.Private) 
Response.Cache.SetSlidingExpiration(true); 

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache) 

Xem thêm question này.

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