public inbox for [email protected]
help / color / mirror / Atom feedFrom: Dave Page <[email protected]>
To: Surinder Kumar <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: [pgAdmin4][Patch]: Load module's JS files only when required
Date: Mon, 22 May 2017 11:52:34 +0100
Message-ID: <CA+OCxoz3Y7aR0JJ0mq-YnnZnztML-Hkv3Trt3hf74GvW0-0Urw@mail.gmail.com> (raw)
In-Reply-To: <CAM5-9D92zW=qJqKT_HFjtMQvOAXuz5a5DJuABnz9fWWLKeZZrw@mail.gmail.com>
References: <CAM5-9D92zW=qJqKT_HFjtMQvOAXuz5a5DJuABnz9fWWLKeZZrw@mail.gmail.com>
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgadmin-hackers>
Hi
On Monday, May 22, 2017, Surinder Kumar <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>> 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
view thread (13+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: [pgAdmin4][Patch]: Load module's JS files only when required
In-Reply-To: <CA+OCxoz3Y7aR0JJ0mq-YnnZnztML-Hkv3Trt3hf74GvW0-0Urw@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox