flutter webview 缓存如何设置
在Flutter中使用webview时,如何正确设置缓存?我尝试了不同的缓存模式,但似乎没有生效。具体想了解:
- 如何启用缓存并控制缓存大小?
- 缓存路径是否可以自定义?
- 清除缓存的最佳实践是什么?
目前使用的是flutter_inappwebview插件,但官方文档对缓存部分的说明不够详细。希望能得到具体的代码示例或配置建议。
2 回复
Flutter WebView 缓存设置方法:
- 使用 flutter_inappwebview 插件(推荐):
initialOptions: {
"cacheMode": CacheMode.LOAD_CACHE_ELSE_NETWORK, // 优先使用缓存
"cacheEnabled": true
}
- 缓存模式选项:
- LOAD_DEFAULT:默认策略
- LOAD_CACHE_ELSE_NETWORK:缓存优先
- LOAD_NO_CACHE:不使用缓存
- LOAD_CACHE_ONLY:仅使用缓存
- 清除缓存:
await InAppWebViewController.clearCache(); // 清除所有缓存
- 设置缓存路径:
initialOptions: {
"cachePath": "自定义缓存路径"
}
建议使用 flutter_inappwebview 插件,功能更完整,缓存控制更灵活。
更多关于flutter webview 缓存如何设置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter WebView 中,可以通过以下方式设置缓存:
1. 使用 flutter_inappwebview 插件(推荐)
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
InAppWebView(
initialUrlRequest: URLRequest(url: WebUri('https://example.com')),
initialSettings: InAppWebViewSettings(
// 启用缓存
cacheEnabled: true,
// 设置缓存模式
cacheMode: CacheMode.LOAD_CACHE_ELSE_NETWORK,
// 应用缓存路径(可选)
applicationCacheEnabled: true,
// DOM 存储启用
domStorageEnabled: true,
// 数据库存储启用
databaseEnabled: true,
),
)
2. 缓存模式选项
// 常用缓存模式:
CacheMode.LOAD_DEFAULT // 默认行为
CacheMode.LOAD_CACHE_ELSE_NETWORK // 优先使用缓存
CacheMode.LOAD_NO_CACHE // 不使用缓存
CacheMode.LOAD_CACHE_ONLY // 只使用缓存
3. 清除缓存
// 清除所有缓存
await InAppWebViewController.clearAllCache();
// 清除特定时间的缓存
await InAppWebViewController.clearCache(
clearSince: DateTime.now().subtract(Duration(days: 7))
);
4. 使用官方 webview_flutter 插件
import 'package:webview_flutter/webview_flutter.dart';
WebView(
initialUrl: 'https://example.com',
onWebViewCreated: (controller) {
// 启用 JavaScript(某些缓存功能需要)
controller.setJavaScriptMode(JavaScriptMode.unrestricted);
},
)
推荐使用 flutter_inappwebview,因为它提供了更完善的缓存控制功能,而官方插件的缓存控制选项相对有限。

