缓存管理



  • https://www.npmjs.com/package/react-native-http-cache

    可以用于React Native下的缓存管理。

    export default class TestPage extends React.Component {
      constructor(props){
        super(props);
        this.state = {
    
        };
      }
      componentWillMount(){
        this.getData();
      }
      async getData(){
        try {
          this.setState({
            'http': await httpCache.getHttpCacheSize(),
            'image': await httpCache.getImageCacheSize(),
            'all': await httpCache.getSize(),
          });
        } catch(err){
          alert('错误', err.message);
        }
      }
      async clearCache(){
        try {
          await httpCache.clear();
          alert('清除缓存成功');
          await this.getData();
        } catch(err){
          alert('错误', err.message);
        }
      }
      showPage(){
        this.props.navigator.push({
          component: MyPage
        })
      }
      render() {
        const { session } = this.props;
        return (
          <View style={styles.centerContainer}>
            <View>
              <Text>Http缓存大小:{this.state.http}</Text>
              <Text>图片缓存大小:{this.state.image}</Text>
              <Text>总缓存大小:{this.state.all}</Text>
            </View>
            <TouchableOpacity onPress={()=>this.getData()}>
              <Text>刷新缓存大小</Text>
            </TouchableOpacity>
            <TouchableOpacity onPress={()=>this.clearCache()}>
              <Text>清除缓存</Text>
            </TouchableOpacity>
            <TouchableOpacity onPress={()=>this.showPage()}>
              <Text>查看带有图片的页面</Text>
            </TouchableOpacity>
          </View>
        );
      }
    }
    


  • 请教一下,缓存文件是自动缓存的吗?比如图片,加载过一次之后便会自动缓存起来吗?如果不是的话,那么如何手动缓存呢?



  • 是自动缓存的,实际上,在RN下有好几个级别的缓存,包括:
    1、磁盘缓存(缓存原始图片文件)
    2、内存缓存(缓存原始图片文件)
    3、内存位图缓存(缓存解码后的位图)
    4、在iOS下,还有http请求的磁盘缓存
    5、http请求的内存缓存。

    这个组件目前管理的是1和4



  • 0_1451530524486_1.png
    0_1451530600554_2.png
    请问3个文件都必须改?



  • 改你自己工程下的那个就可以了



  • @superjs 请问您在处理缓存时都用了什么技术啊?



  • @miracle9312 调用RN内部的接口而已,不明白“都用了什么技术”是指什么,可以问的更明确一些吗?



  • @tdzl2003 就是手机在未联网状态是也能加载部分图片和文件,这个是怎么实现的?里面都涉及到哪些技术?谢谢



  • demo 执行返回错误

    undefined is not an object (evaluation '_reactNativeHttpCache2.default.getHttpCacheSize')

    怎么破 @tdzl2003

    RN 0.25,能否给个完整demo,怎么import的



  • @12343954 说:

    demo 执行返回错误

    undefined is not an object (evaluation '_reactNativeHttpCache2.default.getHttpCacheSize')

    怎么破 @tdzl2003

    RN 0.25,能否给个完整demo,怎么import的

    搞定,幸亏看了一眼源代码

    import * as httpCache from 'react-native-http-cache'

    usage:
    httpCache.getHttpCacheSize()



  • @12343954 楼主怎么解决的,我谷歌没搜到解决方案,
    我的报错:Could not invoke RCTHttpCache.getHttpCacheSize

    看了源码还是没解决



  • 谢谢谢谢谢谢谢谢


登录后回复