数据缓存使用中的坑

#数据缓存使用中的坑-WebView

当我们用浏览器上网时,浏览器会把网页的信息保存起来,以便在下次再浏览该网页时可以得到迅速的相应,并且节省网络资源。咋移动端节省网络资源使用缓存显得尤为重要,可以快速响应和节省流量。

很多应用中使用WebView页面,Android也为WebView提供了完善的缓存策略,缓存的资源在/data/data/应用package下生成database与cache两个文件夹,但是现实中,开发人员总是因为这样那样的原因没有使用缓存,从而造成流量浪费。

如何应用缓存策略,可以简单的理解为:

1.待请求的资源是否已经在本地保存。

2.在客户端程序中知名该请求的响应可以从Cache中加载资源,二者缺一不可。

database可以存放多个数据库文件,在数据库中保存的是请求的url,database中的数据库文件可以用Android的sdk中的sqlite3.exe打开。而cache文件夹中存放对应的缓存文件。

HTTP的cache-Controlde的简单介绍:HTTP Request的Cache-Control可以是no-cache、no-store、max-age、max-stale、min-fresh、no-transform、only-if-cached以及cache-extension,HTTP Response的Cache-Control为pubilc、private、no-cache、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage以及cache-extension。这些Cache策略部分说明如下:

public:相应可以在任何缓存区缓存。
private:对单个用户的整个或部分相应信息,不能在共享缓存区缓存。
no-cache:请求或者响应不使用缓存。
no-store:如果在请求中使用,则该请求和对应的响应都不使用缓存,如果在响应中使用,则该响应和其对应的请求都不使用cache。
max-age:资源在客户端的最大生命周期。
max-stale:客户端可以接收生命周期大于当前时间的响应。

客户端程序中指明该请求的响应可以从cache中加载缓存。在完成了缓存请求资源后,还需要在客户端程序发送HTTP请求时指定该请求的响应资源可以从缓存中获取,否则即使缓存中有对应的响应资源,客户端也不会使用,会重新通过网络下载一遍,这涉及到客户端发送HTTP请求时的缓存模式,客户端可以指定5中缓存模式,分别是:

1.LOAD_CACHE_ONLY:不使用网络,只读取本地缓存。
2.LOAD_DEFAULT:根据Cache-Control决定是否从网络上取数据。
3.LOAD_CACHE_NORMAL:API level 17中已经放弃,从API level 11开始作用通LOAD_DEFAULT模式。
4.LOAD_NO_CACHE:不使用缓存,只从网络中获取数据。
5.LAOD_CACHE_ELSE_NETWORK:只要本地有,无论是否过期,或者NO-CACHE,都使用缓存中的数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值