!453 优化文件缓存初始化效率

Merge pull request !453 from 刘海康/master
This commit is contained in:
openharmony_ci 2025-01-21 02:29:39 +00:00 committed by Gitee
commit 17e3787cfa
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 14 additions and 13 deletions

View File

@ -1,6 +1,7 @@
## 3.2.1-rc.0 ## 3.2.1-rc.0
- Fix bug: CropTransformation is used to crop the original image - Fix bug: CropTransformation is used to crop the original image
- Fix bug: After calling the clear all file cache interfaces, the file cache becomes invalid - Fix bug: After calling the clear all file cache interfaces, the file cache becomes invalid
- Optimize the efficiency of file cache initialization.
## 3.2.0 ## 3.2.0
- When successfully requesting the network, return the httpcode as well - When successfully requesting the network, return the httpcode as well

View File

@ -70,6 +70,7 @@ export class FileCache {
interface CacheFileInfo { interface CacheFileInfo {
file: string; file: string;
ctime: number; ctime: number;
size: number;
} }
// 按照上次访问该文件的时间排序 // 按照上次访问该文件的时间排序
@ -78,26 +79,25 @@ export class FileCache {
let stat: fs.Stat | undefined = await FileUtils.getInstance().Stat(this.path + filenames[i]) let stat: fs.Stat | undefined = await FileUtils.getInstance().Stat(this.path + filenames[i])
cachefiles.push({ cachefiles.push({
file: filenames[i], file: filenames[i],
ctime: stat === undefined ? 0 : stat.ctime ctime: stat === undefined ? 0 : stat.ctime,
size: stat?.size ?? 0
}) })
} }
let sortedCachefiles: CacheFileInfo[] = cachefiles.sort((a, b) => a.ctime - b.ctime) let sortedCachefiles: CacheFileInfo[] = cachefiles.sort((a, b) => a.ctime - b.ctime)
for (let i = 0; i < sortedCachefiles.length; i++) { for (let i = 0; i < sortedCachefiles.length; i++) {
let buf: ArrayBuffer | undefined = await FileUtils.getInstance().readFile(this.path + sortedCachefiles[i].file) const fileSize: number = sortedCachefiles[i].size;
if (buf !== undefined) {
// 处理数量超过size的场景移除即将排除的文件 // 处理数量超过size的场景移除即将排除的文件
if (this.lruCache.length == this.maxSize && !this.lruCache.contains(sortedCachefiles[i].file)) { if (this.lruCache.length == this.maxSize && !this.lruCache.contains(sortedCachefiles[i].file)) {
let remove: number | undefined = this.lruCache.remove(this.lruCache.keys()[0]) let remove: number | undefined = this.lruCache.remove(this.lruCache.keys()[0])
if (remove !== undefined) { if (remove !== undefined) {
FileUtils.getInstance().deleteFile(this.path + this.lruCache.keys()[0]) FileUtils.getInstance().deleteFile(this.path + this.lruCache.keys()[0])
this.removeMemorySize(buf) this.removeMemorySize(fileSize)
} }
} }
this.lruCache.put(sortedCachefiles[i].file, buf.byteLength) this.lruCache.put(sortedCachefiles[i].file, fileSize)
this.addMemorySize(buf) this.addMemorySize(fileSize)
}
} }
this.trimToSize(); this.trimToSize();