# 缓存

通过本地缓存(LocalCache)可以将纹理、模型、文件的资源存储到浏览器的IndexedDB中,用以提升资源加载速度。

# 连接缓存

使用LocalCache的connect静态接口连接本地缓存。

提示

1.缓存必须先连接,然后才可以使用;
2.由于连接操作是异步的,所以为了确保可以正常读写缓存,推荐在缓存连接成功后再初始化三维场景。

import { 
    
    AmbientLight, 
    DirectionalLight, 
    Engine, 
    GridHelper, 
    LocalCache, 
    OrbitControl 
    
} from '@tx3d/core';

// 连接缓存
LocalCache.connect().then( () => {

    // 构建引擎
    const engine = new Engine( {

        // 场景渲染器参数
        sceneRenderer: {

            viewport: document.getElementById( 'viewport' ), // 渲染视口
            antialias: true,                                 // 开启反走样
            clearColor: '#002233'                            // 背景颜色

        },

    } );

    // 创建场景实体
    const scene = engine.createScene(); 
    
    // 为场景添加一个环境光组件
    scene.addComponent( AmbientLight, { 
        
        color: '#ffffff', 
        intensity: 0.25 
        
    } );

    // 为场景添加一个方向光组件
    scene.addComponent( DirectionalLight, { 
        
        position: [ 100, 100, 100 ], 
        color: '#ffffff', 
        intensity: 1.0 
        
    } );

    // 设置激活场景
    engine.setActiveScene( scene );

    // 创建相机实体
    const camera = engine.createCamera( { 
        
        name: 'main_camera', 
        camera: { 
            
            position: [ 0.0, 500.0, 0.0 ]

        } 

    } );

    // 添加OrbitControl组件
    camera.addComponent( OrbitControl, { enableDamping: true } );

    // 设置激活相机
    engine.setActiveCamera( camera );

    // 创建一个空实体
    const entity = engine.createEntity();

    // 添加一个网格助手
    entity.addComponent( GridHelper, { color: '#ffffff' } );    

}, ( error ) => {

    // TODO:连接失败提示

} );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

# 关闭缓存

使用LocalCache的close静态接口关闭缓存。

import { LocalCache } from '@tx3d/core';

// 关闭缓存
LocalCache.close();
1
2
3
4

注意

缓存关闭后,需要重新连接才能使用!

# 删除缓存

1️⃣ 使用LocalCache的deleteCache静态接口删除缓存。

import { LocalCache } from '@tx3d/core';

// 删除缓存
LocalCache.deleteCache();

1
2
3
4
5

2️⃣ 通过浏览器的 "开发者工具"->"应用" 手动删除缓存,如下图所示:

avatar

注意

缓存删除后,需要重新连接才能使用!

# 添加一条缓存记录

使用LocalCache的add静态接口添加一条缓存记录。

import { LocalCache } from '@tx3d/core';

// 添加一条缓存记录
LocalCache.add( './assets/jsons/test.json', jsonData ).then( () => {

    // TODO:添加成功回调

}, ( error ) => {

    // TODO:添加失败回调

} );
1
2
3
4
5
6
7
8
9
10
11
12

提示

无特殊需求,外部勿主动调用该接口!

# 获取一条缓存记录

使用LocalCache的get静态接口获取一条缓存记录。

import { LocalCache } from '@tx3d/core';

// 获取一条缓存记录
LocalCache.get( './assets/textures/a.png' ).then( ( data ) => {

    // TODO:获取成功回调

}, ( error ) => {

    // TODO:获取失败回调

} );
1
2
3
4
5
6
7
8
9
10
11
12

提示

无特殊需求,外部勿主动调用该接口!

# 删除一条缓存记录

1️⃣ 使用LocalCache的delete静态接口移除一条缓存记录。

import { LocalCache } from '@tx3d/core';

// 删除一条缓存记录
LocalCache.delete( './assets/textures/a.png' ).then( () => {

    // TODO:删除成功回调

}, ( error ) => {

    // TODO:删除失败回调

} );

1
2
3
4
5
6
7
8
9
10
11
12
13

提示

无特殊需求,外部勿主动调用该接口!

2️⃣ 通过浏览器的 "开发者工具"->"应用" 手动删除一条缓存记录,如下图所示:

avatar

# 删除所有缓存记录

1️⃣ 使用LocalCache的clear静态接口清空所有缓存记录。

import { LocalCache } from '@tx3d/core';

// 删除所有缓存记录
LocalCache.clear();
1
2
3
4

2️⃣ 通过浏览器的 "开发者工具"->"应用" 手动删除所有缓存记录,如下图所示:

avatar

Last Updated: 9/16/2022, 4:41:18 PM