性能问题:在PDF.js中重新计算样式需要200ms

时间:2014-01-27 22:17:13

标签: css google-chrome pdf.js

您好我尝试在我的网站上实现subj插件。

我使用下一行代码在外部文件上测试此插件(插件非常快:

%iframe{src: '/pdfjs/web/viewer.html?file=http://cdn.mozilla.net/pdfjs/tracemonkey.pdf', style:'border: 0', width:'100%', height:'100%', frameborder:'0', scrolling:'no'}

但是当我实现我自己的文件(在我自己的项目中的文件夹中) 这个插件变得很慢。

%iframe{src: '/pdfjs/web/viewer.html?file=/system/uploads/deal/download_document/24/aaaaa/some.pdf', style:'border: 0', width:'100%', height:'100%', frameborder:'0', scrolling:'no'}

截图

左图:外部(快速)文件的时间轴(1271个元素为35ms)
右图:内部(慢)文件的时间轴(7737元素为196ms):

External (fast) file internal (slow) file

1 个答案:

答案 0 :(得分:4)

这种性能影响是由grab-to-pan.js引起的,这是我为PDF.js编写的库,用于实现手工工具功能。当按下鼠标时,库会在<html>元素上切换一个类名,通过CSS更改光标(从“抓取”到“抓取”):

.grab-to-pan-grabbing * {
    cursor: url("grabbing.cur"), move !important;
    cursor: -webkit-grabbing !important;
    cursor: -moz-grabbing !important;
    cursor: grabbing !important;
}

这种方法似乎对性能有重大影响,所以我改变了更新光标的方式。有关更改,请参阅https://github.com/Rob--W/grab-to-pan.js/commit/e0f893753ac10a5c97159fd01155b05d234f4c0f。一些测试表明,新方法的速度提高了100多倍。我已将补丁提交给PDF.js PR #4209