Ok, let’s
put it in a different way.
Now, we
will look at another application, this is called DesktopOpFrame.aspx and
its structure is very similar to that of MonitoringAdminFrame.aspx.
See here
the relevant traces from first and two subsequent accesses:
1st
==
13:52:46
127.0.0.1 GET /ALUMonitoring/DesktopOpFrame.aspx 200 47843
13:52:46
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/DesktopOp.aspx 200 78
13:52:46
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/images/fondoMainOptions.png 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/images/Experiencia-de-usuario.png 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/images/actualizar.gif 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/images/Seleccion-de-reglas.png 304 0
13:52:46
127.0.0.1 GET /ALUMonitoring/images/Video-wall-NOC.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/WelcomeDesk.aspx 200 781
13:52:47
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/fondo_01_819x590.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/sombra_01.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/fur_01_tr.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/fur_02_tr.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/fur_03_tr.png 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/line510.gif 304 0
13:52:47
127.0.0.1 GET /ALUMonitoring/images/borderbottom.gif 304 0
2nd
==
13:53:13
127.0.0.1 GET /ALUMonitoring/DesktopOpFrame.aspx 200 62
13:53:13
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/DesktopOp.aspx 200 31
13:53:13
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/Experiencia-de-usuario.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/fondoMainOptions.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/actualizar.gif 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/Seleccion-de-reglas.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/Video-wall-NOC.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/WelcomeDesk.aspx 200 515
13:53:13
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/fondo_01_819x590.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/fur_02_tr.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/fur_01_tr.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/fur_03_tr.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/sombra_01.png 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/line510.gif 304 0
13:53:13
127.0.0.1 GET /ALUMonitoring/images/borderbottom.gif 304 0
3rd
===
13:54:39
127.0.0.1 GET /ALUMonitoring/DesktopOpFrame.aspx 200 31
13:54:39
127.0.0.1 GET /ALUMonitoring/DesktopOp.aspx 200 31
13:54:39
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 200 46
13:54:39
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:54:39
127.0.0.1 GET /ALUMonitoring/WelcomeDesk.aspx 200 47
13:54:39
127.0.0.1 GET /ALUMonitoring/images/Experiencia-de-usuario.png 200 15
13:54:39
127.0.0.1 GET /ALUMonitoring/images/actualizar.gif 200 32
13:54:39
127.0.0.1 GET /ALUMonitoring/images/fondoMainOptions.png 200 15
13:54:39
127.0.0.1 GET /ALUMonitoring/images/Seleccion-de-reglas.png 200 16
13:54:39
127.0.0.1 GET /ALUMonitoring/css/Aplication.css 304 0
13:54:39
127.0.0.1 GET /ALUMonitoring/images/Video-wall-NOC.png 200 31
13:54:39 127.0.0.1
GET /ALUMonitoring/WebResource.axd 200 16
13:54:40
127.0.0.1 GET /ALUMonitoring/images/sombra_01.png 200 0
13:54:40
127.0.0.1 GET /ALUMonitoring/images/fondo_01_819x590.png 200 47
13:54:40
127.0.0.1 GET /ALUMonitoring/images/fur_02_tr.png 200 0
13:54:40
127.0.0.1 GET /ALUMonitoring/images/fur_01_tr.png 200 15
13:54:40
127.0.0.1 GET /ALUMonitoring/images/line510.gif 200 16
13:54:40
127.0.0.1 GET /ALUMonitoring/images/borderbottom.gif 200 31
13:54:40
127.0.0.1 GET /ALUMonitoring/images/fur_03_tr.png 200 79
Again, we
see how the first GET /ALUMonitoring/DesktopOpFrame.aspx takes more than
45 seconds to be loaded, while further accesses take less than 100
milliseconds.
The
corresponding .vb file contains code for initializing files and variables on Page_Load(). Here (and all throughout the ASPX page) we
execute code from different files contained in the app_code.dll library.
Later on,
it will load the two page frames that compose the web, DesktopOp.aspx
and WelcomeDesk.aspx, with all the menus and graphics.
My guess
now is that the cost effective part is when loading for the first time the app_code.dll
library, and for this we should use some ASP.NET caching technique.
Do you believe we are now on the right track?