Yesterday I compressed 5 files which take up most of the bandwidth

59Kb map.js
32Kb geometry.js
30Kb wz_jsgraphics.js
 7Kb map_obj.js
 6Kb point.js

totalling 131Kb of client side scripts.

Compressing with Shrinksafe resulted in a total of 66.5Kb, while JSMin
reduced the size to 74.2Kb.

Unfortunately, two issues arise with compression:

1) I encountered some evil eval code in Mapbender: there are register
functions that look like this

"functionName(parameterName)"

If we pack the files with Shrinksafe, the variable in the scope, where
the register function is evaluated

eval(mb_MapRequestSubFunctions[i]);

is no longer named "parameterName" but "_55". So JS throws an
exception like "unknown variable parameterName".

There are two possible solutions: use JSMin, or find a way to run
Shrinksafe in a way that variable names are not shortened. But then the
compression advantage of Shrinksafe compared to JSMin might vanish and
it might not make a difference which one to use.

2) Using JSMin, Firefox crashes randomly when the Firebug plugin is
enabled and "Net" is selected. I believe it is a Firebug bug. In IE
Mapbender loads without problems.


I propose we use JSMin for the upcoming release; but I would be happy to
discuss other solutions for the future.

But with about 57Kb we still have saved a considerable amount of
bandwidth.

Christoph


Christoph Baudson (WhereGroup) schrieb:
thanks for your suggestion, Marc.

I have checked the tool and the compression rates are better than JSMin's.

While JSMin compressed my sample file (map.js, around 60K) to 70%, Shrinksafe made it to around 60%. I think I will try to compress the relevant files with both and want to see if there is a difference. If not, then Shrinksafe is definitely a good choice.

I have also found a nice online interface at

http://alex.dojotoolkit.org/shrinksafe/

The next step would be to find an easy way of compressing all the relevant files in one go, preferably via Eclipse's "Export", as Uli suggested. How do we proceed? I have created a ticket at

http://trac.osgeo.org/mapbender/ticket/54

Christoph

Marc Jansen schrieb:
Hi list,

I would love to see compression brought to the Javascript files and have another suggestion as for the compression tool:

http://dojotoolkit.org/docs/shrinksafe (a nice article which shows how to use the compression tool)

The Java-file custom_rhino.jar is used to pack Javascript. This is used within the dojotoolkit (www.dojotoolkit.org) for example. One can download the file here: http://svn.dojotoolkit.org/dojo/trunk/buildscripts/lib/custom_rhino.jar

-- Marc



Christoph Baudson (WhereGroup) schrieb:
To enable Mapbender to load faster, the new release will employ JavaScript compression.

There has been a lot of discussion about this in the past; I think packing the JS files with JSMin is the best idea:

http://www.crockford.com/javascript/jsmin.html

+ the existing JS code must not stick to a given syntax
+ transparent (removes only linefeeds, whitespaces and comments)
+ no obfuscation
0 compared to real packers with still a good compression rate.

Files that are already compressed with other packers (like jQuery) will of course not be re-compressed.

Some more questions arise:

1) Where to store the compressed/uncompressed files in the file system. The default setting should be "compressed" IMHO. It should be easy to switch back and forth from uncompressed to compressed.

2) Which settings? Take a look at

http://fmarcia.info/jsmin/test.html

You can add comments. The compressed JS files will not have a license on top of the script, as comments are removed. Do we have to add a license?

For compression settings, I chose "conservative" for my test run; Some scripts like jsTree.js don't use the ; to end statements, so a linefeed mustn't be removed.

Any ideas?

Christoph
_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev

_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev

_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev


_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev

Reply via email to