加载多个CKEditors很慢

时间:2014-06-11 17:55:14

标签: ckeditor page-load-time

我在一个网页上有很多ckeditors供学生输入他们的数据。我有很多ckeditors因为每个都是一个变量。遗憾的是,输入文本字段对于请求的数据而言太小。问题是加载网页需要很长时间,有时网页会挂起。

我目前正在加载近425名编辑。

以下是我的三个代码示例:

<script type='text/javascript'>//<![CDATA[
    $(window).load(function () {
        CKEDITOR.on('instanceReady', function (ev) {
            var jqScript = document.createElement('script');
            var bsScript = document.createElement('script');

            jqScript.src = 'http://code.jquery.com/jquery-2.0.2.js';
            bsScript.src = 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js';

            var editorHead = ev.editor.document.$.head;
            editorHead.appendChild(jqScript);
            editorHead.appendChild(bsScript);
        });

        // Load CK Editor
        CKEDITOR.replace('editor1', {
            contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
        });
        // Load CK Editor
        CKEDITOR.replace('editor2', {
            contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
        });
        // Load CK Editor
        CKEDITOR.replace('editor3', {
            contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
        });
    });//]]>
</script>

我在ckeditor上关注了 performance guidelines ,搜索了Stackoverflow以获得答案,但仍然无效。我甚至将ckeditor工具栏最小化为一行。我认为必须有一种方法来加载ckeditors而不必在页面加载时加载所有ckeditors和contentCss,但是当需要ckeditor时。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

  

但网页上的ckeditors总数几乎是425。

您是否曾尝试过425次同时打开任何应用程序?您浏览器中的425选项卡,425个Wordpad,425的任何内容?我不这么认为。

所以答案很短 - 你做错了。您不应该立即初始化所有编辑器。需要时根据需要加载它们,并在不需要时销毁。用户无论如何都无法同时编辑425文本。

答案越长,classic editor是最重的,因为它使用<iframe>。因此,当您初始化425时,您会初始化425个iframe。 Inline editors要轻得多。还有divarea插件,它使经典编辑器使用内联可编辑元素而不是<iframe>,因此它也更轻。

但答案仍然是 - 你做错了。

答案 1 :(得分:2)

接近它的最佳方法是在焦点上或通过按钮激活每个编辑器实例。甚至更酷的是在弹出窗口或弹出窗口中编辑文本,这样在保存html时释放资源就可以销毁它。

还要将您的脚本文件包含在HTML的标题中,而不是动态加载它们(缓慢的方式和缓存不好)。