forked from floraachy/ImageKnife
commit
804049b36b
|
@ -4,6 +4,7 @@
|
|||
- 修复懒加载在多次点击出现卡死的问题
|
||||
- 支持多种组合变换
|
||||
- 提供清理缓存能力
|
||||
- 修复preLoad接口失效
|
||||
|
||||
## 2.2.0-rc.2
|
||||
- ImageKnife支持下采样
|
||||
|
|
|
@ -302,9 +302,58 @@ export class ImageKnife {
|
|||
preload(request: RequestOption): void {
|
||||
// 每个request 公共信息补充
|
||||
request.setFilesPath(this.filesPath);
|
||||
return this.parseSource(request);
|
||||
return this.loadResources(request);
|
||||
}
|
||||
loadResources(request: RequestOption) {
|
||||
let factories: EngineKeyInterface;
|
||||
let cacheKey: string;
|
||||
let transferKey: string;
|
||||
let dataKey: string;
|
||||
if (this.engineKeyImpl) {
|
||||
factories = this.engineKeyImpl;
|
||||
} else {
|
||||
factories = new EngineKeyFactories();
|
||||
}
|
||||
// 生成内存缓存key 内存 变换后磁盘
|
||||
|
||||
let loadKey = '';
|
||||
if (typeof request.loadSrc == 'string') {
|
||||
loadKey = request.loadSrc;
|
||||
} else {
|
||||
loadKey = JSON.stringify(request.loadSrc);
|
||||
}
|
||||
|
||||
let size = JSON.stringify(request.size);
|
||||
|
||||
let transformed = '';
|
||||
if (request && request.transformations) {
|
||||
for (let i = 0; i < request.transformations.length; i++) {
|
||||
if (i == request.transformations.length - 1) {
|
||||
transformed += request.transformations[i].getName() + "";
|
||||
} else {
|
||||
transformed += request.transformations[i].getName() + ",";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let dontAnimateFlag = request.dontAnimateFlag;
|
||||
|
||||
let signature = request.signature;
|
||||
|
||||
cacheKey = factories.generateMemoryCacheKey(loadKey,size,transformed,dontAnimateFlag,signature);
|
||||
|
||||
// 生成磁盘缓存变换后数据key 变换后数据保存在磁盘
|
||||
transferKey = factories.generateTransformedDiskCacheKey(loadKey,size,transformed,dontAnimateFlag,signature);
|
||||
|
||||
// 生成磁盘缓存源数据key 原始数据保存在磁盘
|
||||
dataKey = factories.generateOriginalDiskCacheKey(loadKey,signature);
|
||||
|
||||
request.generateCacheKey = cacheKey;
|
||||
request.generateResourceKey = transferKey;
|
||||
request.generateDataKey = dataKey;
|
||||
|
||||
this.loadCacheManager(request);
|
||||
}
|
||||
// 暂停所有请求
|
||||
async pauseRequests(): Promise<void> {
|
||||
await this.mutex.lock(async () => {
|
||||
|
|
Loading…
Reference in New Issue