2012-02-03 11 views
25

Cách nào là cách nhanh hơn để tải các trang web di động và các trang web không di động trong chế độ xem web trên Android; tải bộ nhớ cache hoặc không tải mà ở tất cả?Caching trong webview Android

Và đề xuất kiểu để tải nội dung đó là gì?

Ngay bây giờ khi tôi không tải bộ nhớ cache tại tất cả các trang web không di động thì tải chậm hơn nhiều so với khi tôi tải chúng trong trình duyệt gốc.

Trả lời

32

Không sử dụng sau đây:

viewer.getSettings().setAppCacheMaxSize(1024*1024*8); 
viewer.getSettings().setAppCachePath("/data/data/com.your.package.appname/cache"‌​);  
viewer.getSettings().setAppCacheEnabled(true); 

Những không có gì để làm với bộ nhớ cache nội webview mặc định. Appcache là một tính năng hoàn toàn khác có nghĩa là bạn có thể chạy trang web với kết nối internet. Nó không hoạt động tốt và có lẽ bạn không muốn sử dụng nó.

Với cài đặt này: viewer.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT) là đủ.

+6

Bạn có thể sao lưu nó với một liên kết đến một số tài liệu mô tả AppCache không? Cho rằng 'LOAD_DEFAULT' có từ" mặc định "trong nó, chắc chắn dòng cuối cùng trong câu trả lời của bạn không có gì trừ khi bạn đã thiết lập rõ ràng một giá trị khác cho nó ở một nơi khác? –

+2

setAppCacheMaxSize không được dùng nữa từ api 18. http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long)] –

+0

@ ed-hinchliffe thật khó để tìm tài liệu tốt về điều này từ chính Google nhưng họ tham khảo tài liệu này https://docs.webplatform.org/wiki/tutorials/appcache_beginner từ phần "Làm việc ngoại tuyến" của bài đăng này trên Google Chrome WebView: https://developer.chrome.com/multidevice/android/overview. Ngoài ra bạn là chính xác trong đó dòng cuối cùng của mình trong câu trả lời không có gì. – Nilzor

13

Tất nhiên, cách tiếp cận được lưu trong bộ nhớ cache sẽ nhanh hơn. Đó là lý do chính xác bộ nhớ đệm là có ở nơi đầu tiên.

Nhưng bạn sẽ ổn nếu bạn không tắt riêng bộ nhớ đệm cho chế độ xem web. Nếu bạn không - nó sẽ sử dụng bộ nhớ cache theo mặc định.

+11

Cảm ơn bạn. Phong cách thông minh này có phải là bộ nhớ cache hoặc có vấn đề gì với điều này không? viewer.getSettings(). setAppCacheMaxSize (1024 * 1024 * 8); viewer.getSettings(). SetAppCachePath ("/ data/data/com.your.package.appname/cache"); viewer.getSettings(). SetAppCacheEnabled (true); viewer.getSettings(). SetCacheMode (WebSettings.LOAD_DEFAULT); – Eljas

+1

Vâng, tôi không thấy bất cứ điều gì sai trái với điều đó (tôi giả sử bạn đặt tên gói thực trong mã thực tế của bạn :)). Nếu nghi ngờ bạn có thể chơi với kích thước và thực hiện một số thử nghiệm để xem hoạt động nào phù hợp nhất với loại nội dung bạn đang tải. Nếu các trang lớn và bạn dự định tải nhiều trang khác nhau - có thể muốn có bộ nhớ cache lớn hơn 1Mb. Nếu chúng chủ yếu là văn bản và ứng dụng của bạn sẽ chỉ cần hiển thị một số lượng nhỏ trong số đó - bạn có thể tốt với cài đặt hiện tại. –

+0

Ngoài ra, nếu câu trả lời là thỏa đáng, hãy xem xét đánh dấu nó là được chấp nhận :) –