详细说明
<link rel="stylesheet" href="/style.css">
<script src="/script.js">script>
<img src="/image.png">
// 伪代码示例
Future<Resource> loadResource(String url) async {
if (await cache.exists(url)) {
final cached = await cache.get(url);
if (!cached.isExpired()) {
return cached;
}
}
return await downloadAndCache(url);
}
3b. 资源下载:
CSS文件优先下载(阻塞渲染)
JavaScript文件可能延迟加载
图片等资源按需加载
3c. 缓存存储:
// 缓存目录结构
/data/data/[应用包名]/cache/WebView/
├── Cache/
│ ├── css/
│ ├── js/
│ └── images/
└── index.db // 缓存索引数据库
// JavaScript执行顺序示例
document.addEventListener('DOMContentLoaded', () => {
// DOM加载完成后执行
});
window.onload = () => {
// 所有资源加载完成后执行
};
webViewController.loadUrl(url, headers: {
'Purpose': 'prefetch'
});
webViewController.setWebViewClient(
shouldInterceptRequest: (request) {
// 自定义缓存策略
}
);
<link rel="stylesheet" href="critical.css" priority="high">
<script src="non-critical.js" defer>script>
在Android上:
/data/data/[应用包名]/cache/WebView/
└── Cache/
├── f_000001 (缓存文件)
├── f_000002
└── index (缓存索引)
在iOS上:
/Library/Caches/[应用Bundle ID]/WebKit/
└── WebsiteData/
├── ResourceCache/
└── LocalStorage/
/// Django后台资源管理器中的资源管理策略
class DjangoAdminResources {
// ... 现有代码 ...
/// 资源加载优先级
static const Map<String, int> resourcePriority = {
'css': 1, // CSS优先加载
'js': 2 // JS后加载
};
/// 判断资源类型
static String getResourceType(String url) {
if (url.endsWith('.css')) return 'css';
if (url.endsWith('.js')) return 'js';
return 'other';
}
/// 获取资源加载优先级
static int getResourcePriority(String url) {
String type = getResourceType(url);
return resourcePriority[type] ?? 3;
}
}
专业技术文档中的称呼:--内嵌浏览器组件 --网页容器组件 --网页视图组件 --Web视图控件
功能描述性称呼: --应用内浏览器 --内嵌网页组件 --网页渲染器 --网页显示组件
场景性称呼: --内嵌浏览器 --混合视图 --应用内网页
特性描述性称呼:
混合视图组件(强调原生+网页混合特性)
网页承载组件(强调承载网页的功能)
网页交互组件(强调与网页的交互能力)
网页嵌入组件(强调嵌入到应用中的特性)
mindmap
WebView中文称呼
功能性称呼
网页浏览组件
网页显示控件
网页渲染组件
技术性称呼
Web视图组件
混合渲染控件
网页容器组件
场景性称呼
内嵌浏览器
应用内网页
混合视图
特性性称呼
网页承载器
网页交互器
网页渲染器