# htmlcache **Repository Path**: mirrors_alibaba/htmlcache ## Basic Information - **Project Name**: htmlcache - **Description**: 最好的骨架屏,HTMLCache——让二次访问的用户更快看到上次展示的内容。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-19 - **Last Updated**: 2025-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HTMLCache 存储HTML(渲染结果),而不是JSON数据。 在HTML里执行(内联),而不是JS资源里。 最好的骨架屏,HTMLCache——让二次访问的用户更快看到上次展示的内容。 LiveDemo+文档:https://alibaba.github.io/htmlcache/ ## 使用场景 适合使用一般的接口缓存方案的页面都可以使用HTMLCache。 但是需要注意的是,HTMLCache缓存的本质上还是一个静态页面。如果有必须使用JS完成的动画等逻辑,则需要在缓存内容展示时自行抹平。 ## 开始使用 首先安装依赖 ```shell npm install --save htmlcache.js ``` 然后在你需要使用HTMLCache的页面模板(即HTML)中,在`
`的最后加入以下代码 ```html ``` 将`'#root'`替换成你页面内容的根节点选择器。 将`'.element-exists-when-loaded'`替换成一个数据返回后必定会显示出来的元素的选择器用于确定卸载HTMLCache的时机(可以先这样试试,有替代方法) 最后,将以下代码加入到你的页面主JS代码中(index.js) ```javascript import 'htmlcache.js'; ``` 之后刷新页面2次。你应该会发现加载时页面不再白屏,而是直接展示了缓存的页面内容。 ## 配置对象 所有的配置都存储在window.htmlcache全局对象中。 你应当在运行loader脚本之前就初始化这个对象,但也有部分仅与capture相关的内容可以后续传入。 下表为支持的配置项及说明: | Key | 类型 | 默认值 | 说明 | |-------------|---------|---------------|-------------------------------------| | cacheKey | string | 必传 | 主Key,决定了本页面所有localStorage存储的前缀以防止冲突 | | source | string | '#root' | 页面内容根节点的选择器。缓存的内容为其innerHTML | | target | DOM | document.body | 挂载缓存数据的目标节点。 | | expire | number | 一周 | 缓存有效期(ms) | | compress | boolean | true | 是否开启LZString压缩 | | shadow | boolean | true | 是否开启ShadowDOM隔离 | | styleFilter | boolean | true | 是否过滤页面中未使用的样式 | | firstScreen | boolean | false | 是否过滤非首屏元素 | | batchKey | string | - | 多页模式的子页面Key(eg.影片ID) | | on | Object | - | 事件回调对象,见后文 | on对象支持的事件回调: | Key | 入参 | 返回值 | 说明 | |-------------|-------|---------|--------------------------------------------------------------------------------------------------------------| | autoCapture | - | boolean | 如果传入该函数,则启用自动缓存模式。