2010-08-06 39 views
9

Tôi đã googling trong nhiều giờ và cố gắng tìm ra điều này, và tôi không thể. Tôi có 1 điều khiển webbrowser trên biểu mẫu, webbrowser1.Làm thế nào để vô hiệu hóa bộ nhớ đệm trong điều khiển .NET WebBrowser?

Khi tôi tải một trang, hãy nói google.com, nếu tôi sử dụng webbrowser1.refresh() hoặc webbrowser1.navigate("google.com"), nó sẽ không tải lại trang, nó đã được lưu trong bộ nhớ cache để nó tải lại bộ nhớ cache. Điều này đặc biệt rõ ràng trên các trang như diễn đàn hoặc craigslist.

Tôi cần xóa bộ nhớ cache giữa mỗi lần làm mới (không lý tưởng) hoặc vô hiệu hóa bộ nhớ đệm tất cả cùng nhau, bất kỳ ý tưởng nào? Những điều duy nhất tôi tìm thấy là lỗi thời (vb6 hoặc thấp hơn).

+0

Ví dụ về điều khiển trình duyệt web vb6 vẫn hoạt động, hãy kiểm tra câu trả lời của tôi , vì nếu bạn giết lịch sử, nó sẽ lừa trình duyệt nghĩ rằng nó không có bản sao được lưu trong bộ nhớ cache. Nhưng cách đáng tin cậy nhất để làm điều đó là xóa bộ nhớ cache bằng cách sử dụng Apis khác. –

Trả lời

5

Bạn có thể thử gọi webbrowser1.Refresh(WebBrowserRefreshOption.Completely). Nó sẽ làm mới trang và hiển thị phiên bản mới nhất, giống như ctrl + F5 trong IE. Xem herehere thông tin khác.

1

This page shows cách xóa một số tập tin tạm thời, đọc nó. Tôi cũng có vấn đề này, nhưng khi .refresh() không hữu ích cho tôi vì nó không kích hoạt sự kiện tài liệu đầy đủ. Vì vậy, khi tôi muốn tải lại, tôi chỉ cần sử dụng .navigate() và trước khi điều hướng, tôi gọi số

System.Diagnostics.Process.Start("rundll32.exe","InetCpl.cpl,ClearMyTracksByProcess 8") 

để xóa bộ nhớ cache.

0

Bạn có thể thử thêm số ngẫu nhiên hoặc guid trong url làm thông số. Chẳng hạn như:

var url = "http://google.com"; 
webBrowser.Navigate(url + "?refreshToken=" + Guid.NewGuid().ToString()); 

Nó không thanh lịch, nhưng nó hoạt động. Hy vọng nó giúp.

1

Trong phương pháp .navigate, bạn vượt qua số 2 (không có cờ lịch sử) nhưng điều này sẽ chỉ giết lịch sử cho điều hướng đó, sẽ không giết lịch sử khi bạn theo liên kết. Nếu bạn muốn xóa lịch sử cho các liên kết được nhấp vào, thì bạn có thể chặn điều hướng trong sự kiện beforenavigate, hủy điều hướng bằng cách đặt hủy = true và sau đó sử dụng URL được cung cấp bởi sự kiện, đang thực hiện điều hướng bằng .navigate with the flag đặt thành 2 lần nữa (cờ không có lịch sử).

Theo như các mục bộ nhớ cache khác như cookie, cờ không hoạt động (mặc dù chúng có thể đã thực hiện điều này trong các phiên bản hiện tại) ... Soto sẽ xóa tất cả các mục trong bộ nhớ cache mà bạn thực sự cần thực hiện bên ngoài trình duyệt web kiểm soát bằng cách truy vấn bộ nhớ cache người dùng bằng cách sử dụng Apis khác và xóa nó, có lẽ trong tài liệu hoàn thành sự kiện hoặc khi duyệt xong. Cũng cần lưu ý rằng nếu bạn giết lịch sử bằng cách sử dụng điều khiển trình duyệt web, điều khiển trình duyệt web. Phương pháp goback sẽ không hoạt động (vì nó sử dụng cùng một lịch sử không may, và không giữ một danh sách lịch sử khác trong bộ nhớ) ... Vì vậy, khi thực hiện một cuộc đua ngựa, nó sẽ hành động như không có gì để quay trở lại: /.

Hãy cho tôi biết nếu bạn cần thêm trợ giúp.

5

Add sau thẻ meta trong trang của bạn

<meta http-equiv="cache-control" content="no-cache"> 
1

sử dụng navigate(url,4) 0x4=noCache cờ

0

Bạn không thể vô hiệu hóa nó. Bạn có thể làm mới trang, xóa bộ nhớ cache trước mỗi yêu cầu hoặc sử dụng một cái gì đó khác với điều khiển trình duyệt web. Nếu bạn muốn xóa bộ nhớ cache trước mỗi yêu cầu, có rất nhiều thông tin xấu trực tuyến.Tôi muốn giới thiệu bạn với câu trả lời của tôi ở đây: https://stackoverflow.com/a/22074463/1607218. Hãy coi chừng, mã được đăng trong các câu trả lời khác trên trang đó KHÔNG đáng tin cậy và cực kỳ lỗi, nhưng hy vọng câu trả lời của tôi sẽ dẫn bạn đi đúng hướng:)

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