Ways to improve speed

Web browser Consideration

Internet Explorer has the highest market share, so that many client company use Internet Explorer (IE) as default
browser.
HTML5 works well and has the highest performance on IE 10 and over with proper javascript support. 
 
We recommend IE11 to  Window 7 user.
In case of Windows XP, we recommend using IE8 browser at least with Service Pack 3.

Now in case of Windows XP, security updates have been stopped so we recommend PC upgrade.

We recommend asynchronous communication rather than synchronous communication

Importance : High

Minimize the number of service request

Importance : High

Minimizing the client side data manipulation after searching

Importance : Middle

Setting dataset enable event

Importance : High

Minimize Expr on grid

Importance : Middle

When searching mass data

Mass data affects performance so that we recommand you to handle data after paging or searching the data by condition.

Importance : High

Minimizing the themes’ file sizes

Importance : Middle

Optimization of CSS, global variables and type definition

Importance : Middle

Use ‘prefixed’ when you set a web image.

(Before change)
ImageViewer.image = "URL('http://www.tobesoft.com/logo.gif')"
(After change)
define prefixed = "ImageHost" in Service Items,
url=''http://www.tobesoft.com/' After definition
ImageViewer.image = "URL('ImageHost::logo.gif')"

Importance : Middle

Setting preload on Tab GUI

Importance : High

Importance : High

Minimizing the including files

Importance : Middle

Source Compress

Importance : High

When Application runs , beginning loading speed performance improvement guide

Server environment setting (Example:Apach Tomcat)

Setting keep-alive

This makes particular one process handles continuous request works from particular user.
If request comes again before  keepAliveTimeout value is not filled, the keepAliveTimeout will start count from 0.

Please refer to setting of each Server(Was) related with Keep-alive setting.

In case a fixed employee works continuously , Keep-alive will do better performance.

gZip compression

What is gZip compression?

gZip is a file format and a software application used for file compression and decompression. The program was created by Jean-Loup Gailly and Mark Adler as a free software replacement for the compress program used in early Unix systems, and intended for use by the GNU Project (the "g" is from "GNU"). Version 0.1 was first publicly released on 31 October 1992, and version 1.0 followed in February 1993.Strong
<Tomcat standard : Server.xml]
Connector compressableMimeType="application/javascript,text/xml,text/javascript,application/xml,text/css,application/x-javascript,text/json,application/json,text/plain"
      compression="off"
      URIEncoding="UTF-8"
      useSendfile="false"
      compressionMinSize="2048"
      connectionTimeout="20000"
      port="8080"
      ...Syncopation ... 

When you change from compression="off" into on, speed improvement is available.

Please ask each Vendor to get setting method of each server(WAS).

Applying verification

Shortcut(f12) on Chrome browser / network

network

Way to conduct nexacro platform Deploy function.

nexacro platform Deploy function merges json module with javascript and compresses so that size is minimized and  performance is optimized.

You need to create separate folder for Deploy.

Build-Deploy-Deploy Application

deploy

Source Comparison

before

after

Way to improve performance using NexacroLoad.json

When Application is run developed by nexaro, nexacro14lib of nexacro public library is called.
In case we reduce calling files, we can improve performance .

nexacro initial running packet (url)

Before modification

url1

After calling index.html, there are 72 times calling until main.xfdl calling.

After modification

url2

After calling index.html, there are 6 times calling until main.xfdl calling.

URL call times can be reduced by binding NexacroLoad.js

Way to apply

Creating NexacroLoad.json

Merge CompBase.json, ComComp.json, DeviceAPI.json and Grid.json of nexacro14lib into NexacroLoad.json file.

Copy NexacroLoad.json file into nexacro14lib\component\ folder.

json contents

old CompBase.json contents
 {
 "name": "ComComp",
 "version": "14.0.0.730",
 "description": "nexacro platform 14 Unified Framework Library",
 "license": "",
 "scripts": [
   "ComComp/Dataset.js", 
   "ComComp/DomObject.js",
   "ComComp/Button.js", 
   "ComComp/Static.js", 
   "ComComp/Edit.js", 
   "ComComp/MaskEdit.js", 
   "ComComp/TextArea.js", 
   "ComComp/ImageViewer.js", 
   "ComComp/CheckBox.js", 
   "ComComp/Radio.js", 
   "ComComp/ListBox.js", 
   "ComComp/Combo.js", 
   "ComComp/Div.js", 
   "ComComp/ProgressBar.js", 
   "ComComp/PopupDiv.js", 
   "ComComp/Menu.js", 
   "ComComp/PopupMenu.js", 
   "ComComp/Spin.js", 
   "ComComp/DatePicker.js", 
   "ComComp/Calendar.js", 
   "ComComp/GroupBox.js", 
   "ComComp/Tab.js", 
   "ComComp/FileDownload.js", 
   "ComComp/FileUpload.js", 
   "ComComp/FlashPlayer.js", 
   "ComComp/MediaPlayer.js",
   "ComComp/WebBrowser.js",
   "ComComp/Map.js",
   "ComComp/Sketch.js",
   "ComComp/ExportObject.js",
   "ComComp/ImportObject.js",
   "ComComp/Tray.js"
 ],
  
 "objInfo": [
 "ComComp/Sketch.info", 
 "ComComp/editmodeType.info", 
 "ComComp/imemodeType.info", 
 "ComComp/readonlymodeType.info", 
 "ComComp/updatebindingvaluemodeType.info"
 ]
}
//@ sourceURL=ComComp.json

Merging NexacroLoad.json

Merge each json file into one.
{
 "name": "NexacroLoadJson",
 "version": "14.0.0.703",
 "description": "nexacro platform 14 Unified Framework Library",
 "license": "",
 "scripts": [
  "CompBase/Element_HTML5.js",
  "CompBase/Element_Runtime.js",
  "CompBase/CompBase.js", 
  "CompBase/CompEventBase.js", 
  "CompBase/Data.js", 
  "CompBase/EditBase.js", 
  "CompBase/FormBase.js", 
  "CompBase/TitleBar.js", 
  "CompBase/StatusBar.js", 
  "CompBase/FrameBase.js",  
  "CompBase/ScrollBar.js", 
  "CompBase/Step.js",
  "ComComp/Dataset.js", 
  "ComComp/DomObject.js",
  "ComComp/Button.js", 
  "ComComp/Static.js", 
  "ComComp/Edit.js", 
  "ComComp/MaskEdit.js", 
  "ComComp/TextArea.js", 
  "ComComp/ImageViewer.js", 
  "ComComp/CheckBox.js", 
  "ComComp/Radio.js", 
  "ComComp/ListBox.js", 
  "ComComp/Combo.js", 
  "ComComp/Div.js", 
  "ComComp/ProgressBar.js", 
  "ComComp/PopupDiv.js", 
  "ComComp/Menu.js", 
  "ComComp/PopupMenu.js", 
  "ComComp/Spin.js", 
  "ComComp/DatePicker.js", 
  "ComComp/Calendar.js", 
  "ComComp/GroupBox.js", 
  "ComComp/Tab.js", 
  "ComComp/FileDownload.js", 
  "ComComp/FileUpload.js", 
  "ComComp/FlashPlayer.js", 
  "ComComp/MediaPlayer.js",
  "ComComp/WebBrowser.js",
  "ComComp/Map.js",
  "ComComp/Sketch.js",
  "ComComp/ExportObject.js",
  "ComComp/ImportObject.js",
  "ComComp/Tray.js",
  "Grid/GridInfo.js", 
  "Grid/Grid.js",
  "DeviceAPI/SQLite.js",
  "DeviceAPI/SQLite_Runtime.js",
  "DeviceAPI/Plugin.js",
  "DeviceAPI/DeviceObjs.js",
  "DeviceAPI/DeviceObjs_Runtime.js",
  "DeviceAPI/XPush.js",
  "DeviceAPI/Mobile.js",
  "Chart/ChartInfo.js", 
  "Chart/Chart.js",
 
 ],
  
 "objInfo": [
 "ComComp/Sketch.info", 
 "ComComp/editmodeType.info", 
 "ComComp/imemodeType.info", 
 "ComComp/readonlymodeType.info", 
 "ComComp/updatebindingvaluemodeType.info"
 ]
}
//@ sourceURL=ComComp.json

Way to apply using nexarcro Studio

Changing TypeDefinition

TypeDefinition1

Deploy

Deploy at Build->deploy->Deploy Application.

TypeDefinition1

TypeDefinition1

TypeDefinition1

Notice

Js file of Framework.json can not be involved.

CompBase.json, ComComp.json, Grid.json, DeviceAPI.json order can not be changed.

When Runtime is run, start.json is applied Automatically

start.json 예제)
{
    "version" : "14.0.0.1",
    "runtime" :
    {
        "target" :
        {
            "os" : "windows"
        },
        "framework" :
        [
         "./nexacro14lib/framework/Framework.js"
        ],
        "component" :
        [
         "./nexacro14lib/component/NexacroLoad.js"
        ],
        "form" :
        [
         "./Base/main.xfdl.js"
        ],
        "xadl" :
        {
          "launch" : "./nexacro.xadl.js",
     "quickview" : "./nexacro.xadl.quickview.js"
        },
        "protocol":
        {
            "adaptors":
            [
          
            ]
        },
        "resource" :
        {
        }
    }
}

Notes for design/CSS (Performance improvement)

Use image as little as possible.

If it is possible, don't use full image .

If gradation can be expressed using CSS code, don't use image.

We recommend not to use gradation without special reason. Or use one color.