From: | Dave Page <dpage(at)pgadmin(dot)org> |
---|---|
To: | Surinder Kumar <surinder(dot)kumar(at)enterprisedb(dot)com> |
Cc: | pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org> |
Subject: | [pgAdmin4][Patch]: Load module's JS files only when required |
Date: | 2017-05-22 10:52:34 |
Message-ID: | CA+OCxoz3Y7aR0JJ0mq-YnnZnztML-Hkv3Trt3hf74GvW0-0Urw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-hackers |
Hi
On Monday, May 22, 2017, Surinder Kumar <surinder(dot)kumar(at)enterprisedb(dot)com
<javascript:_e(%7B%7D,'cvml','surinder(dot)kumar(at)enterprisedb(dot)com');>> wrote:
> Hi
>
> As per pgAdmin4 design, template JS files can either be preloaded or load
> when a specific node expands (by adding for e.g.: when: 'server').
>
> The JS files of several modules found to be loaded when pgAdmin4 loads
> which results in increasing:
>
> - the number of http requests
> - latency(greater request time)
> - pgAdmin4 load time
>
> *Tested on Firefox:*
>
> Before applying patch
>
> - http requests - 143
> - Content size - 3.4 MB
> - Load time: 4.1s (onload: 524ms)
>
> After applying patch
>
> - http requests: 68
> - Content size: 2.1 MB
> - Load time: 2.84s (onload: 481ms)
>
> This is great work!
However (sorry!) - I'm planning on working on an alternative change on my
flight in a couple of hours. Joao has broken the Grunt code out of the
History tab patch for me to work with - the idea is something like:
- We continue to migrate all the JS out of templates and into static files
whereever possible, using the client-side translation.
- We then have a set of Grunt tasks that will collect all the static JS,
minimise it, and pack it into a single file to load at startup.
I'm currently thinking that non-debug/package builds will pre-pack
everything for installation. The aim is to have JS HTTP requests be down in
single figures to maximise loading time.
The are various issues to work through however; at least, how do we handle
debug builds, and how do we re-pack everything if a user installs a new
module (or updates something).
We'd also need to get rid of requirejs.
>
> Also, I found the http request for gravtar takes much time(depending on
> internet speed) to load which increases load time.
> https://secure.gravatar.com/avatar/d30aea269994f01256a99a8e7
> 154a328?s=100&d=retro&r=g
>
> Shouldn't the gravatar image be replaced with custom image ? I don't see
> its any use except displaying for user.
>
Maybe. Doesn't it load asynchronously though?
>
> *Patch changes:*
>
> 1) Load following modules JS when 'servers' node expands:
>
> - Roles
> - FileManager
> - Backup
> - Datagrid
> - Grant wizard
> - Import/Export, Maintenance & restore
> - Sqleditor
>
> 2) Load Debugger JS when database node expands
>
> 3) Load Flotr2 when render function is called in dashboard.js
>
> 4) Load BigNumber library when sorting is performed on Statistics tab in
> backgrid.pgadmin.js
>
> 5) Remove 'backgrid.select.all' from dependency list(user_management.js)
> as it had no use.
>
> After applying this patch, Menu items such "Query tool", "Grant wizard"
> don't appear in Tools menu.
> I have logged an RM2424 <https://redmine.postgresql.org/issues/2424> to
> track this.
>
OK. Lets hold fire on this for now though, until I can PoC the work above.
Of course, any thoughts or comments are welcome.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Surinder Kumar | 2017-05-22 12:39:56 | Re: [pgAdmin4][Patch]: Load module's JS files only when required |
Previous Message | Akshay Joshi | 2017-05-22 09:28:09 | Re: Declarative partitioning in pgAdmin4 |