Web 中读取 e.clipboardData.files 耗时过长原因分析与解决
Posted 张驰Terry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web 中读取 e.clipboardData.files 耗时过长原因分析与解决相关的知识,希望对你有一定的参考价值。
原因分析
在chrome浏览器引擎的底层实现中,这一步隐含了转Blob的操作,当文件非常大时,耗时惊人
// data_transfer.cc
FileList* DataTransfer::files() const
auto* files = MakeGarbageCollected<FileList>();
if (!CanReadData())
return files;
for (uint32_t i = 0; i < data_object_->length(); ++i)
if (data_object_->Item(i)->Kind() == DataObjectItem::kFileKind)
Blob* blob = data_object_->Item(i)->GetAsFile();
if (auto* file = DynamicTo<File>(blob))
files->Append(file);
return files;
优化手段
可以通过提前判断,当能够获取到html数据时,直接进行解析,跳过读取files的步骤
以上是关于Web 中读取 e.clipboardData.files 耗时过长原因分析与解决的主要内容,如果未能解决你的问题,请参考以下文章