【问题标题】:Performance issue: Recalculating Styles takes 200ms in PDF.js性能问题:在 PDF.js 中重新计算样式需要 200 毫秒
【发布时间】:2014-02-18 23:58:32
【问题描述】:

您好,我尝试在我的网站中实现 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 个元素为 35 毫秒)
右图:内部(慢)文件的时间线(7737 个元素为 196 毫秒):

【问题讨论】:

    标签: css google-chrome pdf.js


    【解决方案1】:

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

    .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 倍以上。我已经以PR #4209 的身份将补丁提交给PDF.js。

    【讨论】:

    • 应用您的更改后,我看到了性能 - 但它仍然很慢。问题是使用 wiked_PDF 生成 PDF 文件。由于某些原因,当尝试使用 pdf.js 插件时,此 gem 生成的所有 pdf 都非常慢。我通过更改 pdf 的生成器(wiked_pdf 为 unaconv)解决了这个问题
    • @DemitriyDN “它很慢”,您指的是原始错误(“重新计算样式”)还是其他什么?在github.com/mozilla/pdf.js 创建问题并包含指向“慢速”PDF 的链接?然后我们可以尝试找到瓶颈并提高性能。
    • 我通过将 WikedPDF(wkhtmltopdf) 更改为 Unoconv pdf 生成器解决了这个问题
    猜你喜欢
    • 2022-06-13
    • 2012-01-23
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多