缓存模式

Kalle提供了9种缓存模式来满足各种业务需求,缓存模式必须要配置CacheStore,详见配置/config/CacheStore

用法如下:

Kalle.get(url)
    .cacheMode(CacheMode)
    .cacheKey(String)
    ...

cacheMode()方法是设置请求的缓存模式,决定如何读取缓存,如何写入缓存(不是决定如何回调数据),如果不设置默认使用HTTP模式。cacheKey()方法是设置请求的缓存数据对应的键,如果不设置默认使用url(含UrlParam,不含BodyParam)作为缓存数据的键。

建议:每一个请求都应该设置缓存键,否则容易发生不同接口的数据覆盖,因为很多Body类请求的url是不含BodyParam的,所以不同的接口虽然参数不同,但是url是相同的。

缓存模式的含义

建议开发者浏览缓存模式的源码和注释,有助于理解和更好的使用缓存模式。

  • HTTP
    Http标准模式;发起请求前如果本地已经有缓存,会检查缓存是否过期,如果没过期则返回缓存数据,如果过期则带上缓存头去服务器做校验。如果服务器响应304则返回缓存数据,如果响应其它响应码则读取服务器数据,并根据服务器响应头来决定是否缓存数据到本地。如果请求失败则是正常失败。

  • HTTP_YES_THEN_WRITE_CACHE
    先Http标准协议再写入缓存;发起请求前如果本地已经有缓存则带缓存头,在有缓存的时候,服务器可能响应304,则返回缓存数据,如果服务器响应其它响应码,则读取服务器数据,并把请求成功后的数据缓存到本地。如果请求失败则是正常失败。

  • NETWORK
    仅仅请求网络;发起请求前不管本地是否有缓存,都不会带上缓存头,请求成功后,不论服务器响应头如何,都不会缓存数据到本地。如果请求失败则是正常失败。

  • NETWORK_YES_THEN_HTTP
    先仅仅网络再按照Http标准协议;发起请求前不管本地是否有缓存,都不会带上缓存头,请求成功后根据服务器响应头来决定是否缓存数据到本地。如果请求失败则是正常失败。

  • NETWORK_YES_THEN_WRITE_CACHE
    先仅仅网络再写入缓存;发起请求前不管本地是否有缓存,都不会带上缓存头,请求成功后会把数据缓存到本地。如果请求失败则是正常失败。

  • NETWORK_NO_THEN_READ_CACHE
    先仅仅网络,失败后读取缓存;发起请求前不管本地是否有缓存,都不会带上缓存头,请求成功后正常返回,请求失败后尝试读取缓存,如果缓存不存在则继续按照之前失败的流程走,如果缓存存在则正常返回缓存。

  • READ_CACHE
    仅仅读取缓存;只是去读取缓存,如果缓存不存在则会失败,如果缓存存在就返回缓存。

  • READ_CACHE_NO_THEN_NETWORK
    先读取缓存,缓存不存在再请求网络;先尝试读取缓存,如果缓存存在就返回缓存,如果缓存不存在就请求网络,请求成功后不论服务器响应头如何都不存缓存数据。如果请求失败则是正常失败。

  • READ_CACHE_NO_THEN_HTTP
    先读取缓存,缓存不存在再;先尝试读取缓存,如果缓存存在就返回缓存,如果缓存不存在就请求网络,请求成功后根据服务器响应头来决定是否缓存数据到本地。如果请求失败则是正常失败。

results matching ""

    No results matching ""