hybird 开发中的缓存问题
http协议缓存
通过服务器http加载的资源,方便服务器push的方案,缓存由浏览器和服务器共同决定。
file协议
放在资源包中的文件,通过file协议的相对路径或者绝对路径加载,应该是永久缓存只要不更新包,资源就不会更新。
storage
通过storage 缓存数据,通过onstorage更新dom
sqlite
通过sqlite存储少量持久缓存资源,不要存储过大的文件,对于sqlite的存储,可以使用webworker开启一个新的线程去存储数据,在操作数据库时影响浏览器渲染性能。
webworker
webworker,多线程之间不支持数据共享,需要借助中间环节,比如storage
Android webView 缓存 Cache + HTML5离线功能 解决
WebView的缓存可以分为AppCache页面缓存
和DOM Storage(Web Storage)数据缓存
。
AppCache
(页面缓存)是指加载一个网页时的html、JS、CSS等页面或者资源数据。这些缓存资源是由于浏览器的行为而产生,开发者只能通过在对应资源服务器中配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。
AppCache
(页面缓存)使我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等静态资源。尤其在涉及到应用于网站的多个页面上的CSS和JavaScript文件的时候非常有用。其大小目前通常是5M
。可以配置,通过安卓api。
在·Android·上需要手动开启(setAppCacheEnabled
),并设置路径(setAppCachePath
)和容量(setAppCacheMaxSize
)
Android
中Webkit
使用一个db文件来保存AppCache
数据(my_path/ApplicationCache.db
)
他们的索引存放在/data/data/package_name/databases
下。
他们的文件存放在/data/data/package_name/cache/xxxwebviewcachexxx
下。文件夹的名字在2.x和4.x上有所不同,但都文件夹名字中都包含webviewcache。
数据缓存,DOM Storage(Web Storage)
。
如果需要存储一些简单的用key/value对即可解决的数据,DOM Storage(Web Storage)是非常完美的方案。根据作用范围的不同,有Session Storage
和Local Storage
两种,分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动删除,否则数据永远不会过期)。
在Android中可以手动开启DOM Storage(setDomStorageEnabled
),设置存储路径(setDatabasePath
)
Android中Webkit会为DOM Storage产生两个文件my_path/localstorage/http_h5.m.taobao.com_0.localstorage