2017-12-17 16:33 CET

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0001363openmediavaultFeaturepublic2017-08-10 22:03
Assigned Tovotdev 
Product VersionKralizec (1.x) 
Target VersionFixed in Version 
Summary0001363: OMV make a lot of HTTP queries
DescriptionToday, OMV make a lot of HTTP queries. With some plugins, OMV can make more than 200 queries mainly for javascript.

Some propositions :
 - Merge ? UglifyJS ?
 - Better caching ? (ex: https://www.digitalocean.com/community/questions/leverage-browser-caching-for-nginx)
 - Lazy loading, no charging all JS but load on demande
TagsNo tags attached.
Product build
Attached Files




tekkbebe (reporter)

Last edited: 2015-07-10 17:07

View 2 revisions

I like the better caching idea, if it would not cause any problems.

I don't like the lazy load idea. Under that scenario you could go for a while before discovering js files with errors.


llaumgui (reporter)


I am better web perf (analyse with Google Chrome) with this :
cat /etc/nginx/openmediavault-webgui.d/performance.conf
# Enable gzip compression
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

location /css {
    expires 1M;
location /js {
    expires 1M;


votdev (administrator)

Partly fixed with https://github.com/openmediavault/openmediavault/commit/c39ed2e658203ecf8722e70eb9862f4e2a3b8596.


leaderint (reporter)

This snippet will cache all static assets for a period of one week:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
    expires 7d;

There's a good overview of how to fine tune the settings here:


votdev (administrator)

Lazy loading would be a good solution, but requires a rewrote of all plugins and some of the core code to meet the ExtJS specifications for lazy loading.

Merging JS code is no good idea because this must be done everytime a plugin or OMV core is updated. Also this solution is very expensive and requires much CPU and time on low powered systems.


leaderint (reporter)

initiating multiple HTTP requests for multiple JS files is more expensive though. That's why HTTP2 pipes it all through one.

-Issue History
Date Modified Username Field Change
2015-07-08 17:01 llaumgui New Issue
2015-07-08 17:01 llaumgui Status new => assigned
2015-07-08 17:01 llaumgui Assigned To => votdev
2015-07-10 17:01 tekkbebe Note Added: 0003794
2015-07-10 17:07 tekkbebe Note Edited: 0003794 View Revisions
2015-07-11 12:03 llaumgui Note Added: 0003795
2017-07-20 08:54 votdev Note Added: 0004873
2017-08-10 21:47 leaderint Note Added: 0004921
2017-08-10 21:55 votdev Note Added: 0004922
2017-08-10 22:03 leaderint Note Added: 0004925
+Issue History