I was told that our ISP has this enabled
It is not. You can check this in the chrome dev console (right-click on the headers in the network tab, add column Response Headers - Content-Encoding)
Your site:
An example of where gzipping is enabled by the ISP:
Of course the sheer size of your libraries does not help getting you great scores. Here is a comparison between your empty project and an empty BANanoSkeleton project:
In reality (real use of) this may not be a real problem. This is something you have to experience yourself. It may not give good numbers, but if it loads fast enough (under 2 seconds is fine, so you should try to get it there, now it is 4.5s) that may be ok.
I know you love to use code generators and they may give fast results, but they also often produce very dirty code. The use of Vue may not be the best choice either as all it does is add an extra layer of code. What I mean is B4J should've been your 'Vue' layer. BANano was meant to be the tool to write your own 'Vue' library. Vue is also just a tool (that happens to be writting in javascript itself) to help you write a javascript-build website, but that is exactly what BANano does too.
Things you can check in your libraries to allow BANano to do some cleanup (remove dead code) are the following:
1. are you making smart use of BANano.DependsOnAsset? This may require you to split up the javascript/css libraries you are using (or with a bit of luck they already have separate modules for each component)
Example in the BANanoSkeleton SKMenu component. Those assets will only be loaded
IF one uses the SKMenu component:
BANano.DependsOnAsset("BANanoSkeleton.menu.min.css")
BANano.DependsOnAsset("BANanoSkeleton.menu.min.js")
2. Avoid circular referencing of classes at all costs. Such references will prevent BANano from removing dead code.
For example you may have a class HTML that is used in MyComponent as a property. At the same time, the HTML class returns somewhere in its code a MyComponent class. If so, this code is considered circular referencing and neither of the classes will be removed, even if neither of them are used.
By keeping track of those two points, my 'empty' BANanoDemo above has not generated any 'not-used' BANanoSkeleton code and hence is very small and fast to load. That is the reason why it gets the 100% scores (together with compression, correct use of cache, CDNs etc on the server side). As you can see in the top images, my app.js takes about 60 ms to load, yours 4.22 seconds.
This is the .htaccess file on my server (for the caching and Charater Set):
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
AddCharset UTF-8 .html
It does take quite some effort from a library builder to make good libraries, I know. While writing the BANanoskeleton library, I constantly think about stuff like that. Something code generators cannot do.
Alwaysbusy