起首,不消思虑就知道,这些文件必定是在/data/data/包名/目次下,在我之前的一篇博客琅绫擎提到过,这是每一个应用本身的内部存储目次。
接着,我们打开终端,应用adb连接办机,然后按照下面敕令操作一下。
- // 1.先辈入shell
- adb shell
- // 2.开启root账号
- su
- // 3.修改文件夹权限
- chmod 777 data/data/你的应用包名/
- // 4.修改子文件夹的权限,因为Android敕令行不支撑向Linux那样的-R敕令实现递归式的chmod。。。
- chmod 777 data/data/你的应用包名/*
- // 5.所以如不雅你对应用目次层级更深,你就要进一步地chmod。。。
- chmod 777 data/data/你的应用包名/*/*
- // 6.直到终妒攀里提示你说,no such file or directory时,解释chmod完了,所有的内部存储琅绫擎的文件夹和文件都可以看到了,如不雅大年夜家有更好的办法请必定告诉我,多谢了~
- Android 4.4的目次:/data/data/包名/app_webview/cache/,如下图所示的第二个文件夹。
这两个字段是接收响应时,浏览器决定文件是否须要被缓存;或者须要加载文件时,浏览器决定是否须要发出请求的字段。
- Cache-Control:max-age=315360000,这表示缓存时长为315360000秒。如不雅315360000秒内须要再次请求这个文件,那么浏览器不会发出请求,直接应用本地的缓存的文件。这是HTTP/1.1标准中的字段。
- Expires: Thu, 31 Dec 2037 23:55:55 GMT,这表示这个文件的过不时光是2037年12月31日晚上23点55分55秒,在这个时光之前浏览器都不会再次发出请求去获取这个文件。这是HTTP/1.0中的字段,如不雅客户端和办事器时光不合步会导致缓存出现问题,是以才有了膳绫擎的Cache-Control,当它们同时涌如今HTTP Response的Header中时,Cache-Control优先级更高。
可能你留意到了,第一个文件夹是叫Application Cache,我们后面再说它。
- Android 5.1的目次:/data/data/包名/cache/org.chromium.android_webview/下面,如下图所示。
然则在5.1体系上,/data/data/包名/app_webview/文件夹依然存在,只是4.4体系膳绫擎存储WebView自带缓存的app_webview/cache文件夹不再存在了(留意下App Cache目次还在),如下图所示。
综上所述,WebView自带的浏览器协定支撑的缓存,在不合的体系版本上,地位是不一样的。也许除了我root过的4.4、5.1以外,其他版本体系的WebView自带缓存还可能存在于不合的目次琅绫擎。
别的一个是关于缓存文件的存储格局和索引格局,在不合的手机上可能也有差别,因为之前看到网上的人都说有叫webview.db或者webviewCache.db的文件,这个文件呢,还不是在app_webview/cache或者org.chromium.android_webview下面,而是在/data/data/包名/database/琅绫擎。然则,我这两台root过的手机都没有看到这种文件,并且我把/data/data/包名/下面所有的db文件都打开看了,并没有发明有存储url记录的table。。
实际上,以5.1体系为例,我看到了/data/data/包名/cache/org.chromium.android_webview/下面有叫index和/index-dir/the-real-index的文件,以及一堆名称为md5+下划线+数字的文件,膳绫擎的图中也可以看获得,这块的道理仍然有些疑问,也欲望专业的大年夜神可以解答一下。
四、H5的缓存
1.工作道理
- <html manifest="xxx.appcache">
- </html>
xxx.appcache文件用的是相对路径,这时appcache文件的路径是和页面一样的。也可以应用的绝对路径,然则域名要保持和页面一致。
完全的xxx.appcache文件一般包含了3个section,根本格局如下:
- CACHE MANIFEST
- # 2017-05-13 v1.0.0
- /bridge.js
- NETWORK:
- *
- FALLBACK:
- /404.html
- CACHE MANIFEST下面文件就是要被浏览器缓存的文件
- NETWORK下面的文件就是要被加载的文件
- FALLBACK下面的文件是目标页面加载掉败时的显示的页面
可以看到,AppCache缓存须要在每次加载页面时都发出一个xxx.appcache的请求去检查manifest文件是不是有更新(byte by byte)。AppCache有一些坑的处所,且官方已经不推荐应用了,但今朝主流的浏览器依然是支撑的。文┞仿里重要提到下面这些坑:
推荐阅读
新体系Fuchsia界面UI据AndroidAuthority称,今朝谷歌全新的操作体系Fuchsia还处于研发阶段,Android和Chrome OS都是一种基于Linux的自由及开放源代码的操作体系,而Fuchsia体系的内核为M>>>详细阅读
本文标题:WebView 缓存原理分析和应用
地址:http://www.17bianji.com/lsqh/35265.html
1/2 1