如何减少dojo对服务器的请求数量?

时间:2016-04-27 14:32:16

标签: xpages

我正在使用带有Fix Pack 5的Domino 9.0.1,它给了我dojo 1.9.7。在我的xsp属性中,我将它设置为使用运行时优化的JavaScript和CSS资源。我期待这个设置可以大大减少加载XPage时对服务器的请求数量,但它只有最小的效果。

罪魁祸首是dojo.js - 它针对各种.js和资源文件向服务器做了100多个单独的请求。我假设这些来自我使用的各种控件,利用dojo。有没有办法将这些dojo请求合并到一个请求中?

更新:它们几乎全部来自/xsp/.ibmxspres/dojoroot-1.9.7/dijit//xsp/.ibmxspres/dojoroot-1.9.7/dojo/,还来自/xsp/.ibmxspres/.extlib/dijit/

更新:  我的XSP设置:

xsp.ajax.renderwholetree=false
xsp.error.page.default=true
xsp.persistence.mode=fileex
xsp.resources.aggregate=true
xsp.user.timezone=true
xsp.html.doctype=html
xsp.theme.mobile.pagePrefix=m_
xsp.application.forcefullrefresh=true
xsp.library.depends=com.ibm.xsp.extlib.library
xsp.min.version=9.0.1
xsp.theme=vi.theme

更新: 我正在使用一个dynamicContent控件,它自动加载一个自定义控件,其中包含许多使用dojo的控件。这导致XPages引擎生成一堆脚本标记,其中包含dojo.require()调用。这些调用导致dojo.js发出100多个xhr请求。

2 个答案:

答案 0 :(得分:4)

我的解决方案是使用资源标记包含dows.require()调用XPages引擎在我的主题中的自定义控件中自动生成:

<resources>
        <dojoModule target="xsp" name="dojo.parser"></dojoModule>
        <dojoModule target="xsp" name="extlib.dijit.DynamicContent"></dojoModule>
        <dojoModule target="xsp" name="dextlib.dojo.helper.IFrameAdjuster"></dojoModule>
        <dojoModule target="xsp" name="dijit.Toolbar"></dojoModule>
        <dojoModule target="xsp" name="dijit.form.Button"></dojoModule>
        <dojoModule target="xsp" name="extlib.dijit.Menu"></dojoModule>
        <dojoModule target="xsp" name="extlib.dijit.Tabs"></dojoModule>
        <dojoModule target="xsp" name="extlib.dijit.TabPane"></dojoModule>
        <dojoModule target="xsp" name="dijit.form.DateTextBox"></dojoModule>
        <dojoModule target="xsp" name="dijit.form.TimeTextBox"></dojoModule>
    </resources>

这会导致聚合dojo js文件。执行此操作后,请求数从134个增加到28个。

答案 1 :(得分:2)

这些路径中的-u表示它正在加载未压缩的dojo文件资源。这表明未启用聚合。

如果查看应用程序的xsp属性的源窗格,它应该具有此属性xsp.resources.aggregate=true,以启用资源聚合器。你应该删除它,如果它在那里:xsp.client.resources.uncompressed=true。它们对应于下面突出显示的复选框:

enter image description here