Yui Compressor for CSS and JS
Magento merged CSS compression¶
To reduce the size of merged Magento css files, you can setup scheduled script to do that for your magento project.
You will this library to get it working. Go to this page and download yuicompressor-2--.jar file.
Then create a directory outside your web root. Containing your file and bash script with the content below.
#!/usr/bin/env bash
readonly DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )";
cd $DIR;
set -e
set -u
set -o pipefail
standardIFS="$IFS"
IFS=$'\n\t'
readonly cssDir="${DIR}/../public/media/css_secure";
function optimiseImages() {
for f in $(ls $cssDir -I "*original" -I "*minified")
do
if [[ ! -h $cssDir/$f ]];
then
# optimizes only if file is not a symbolic link
echo "Optimising $f";
cd $cssDir;
cp $f $f.original
java -Xss4m -jar ../../../merged_css_optimisation/yuicompressor-2.4.8.jar --type css $f > $f.minified && rm -f $f && ln -s $f.minified $f;
echo "Optimisation done for - $f";
fi
done
}
function cleanOldOriginals() {
for f in $(ls $cssDir | grep 'original\|minified')
do
minified=$(echo $f | sed 's/.original//g' | sed 's/.minified//g');
if [[ ! -f $cssDir/$minified ]];
then
echo "Minified file $minified not found, therefore removing original $f"
# remove .original file
rm -f $cssDir/$f;
# remove .minified file
rm -f $cssDir/$minified.minified
fi
done
}
optimiseImages
cleanOldOriginals
Then put the record in crontab and your script is good to do it's job which is compress and reduce the size of merged css files which
are located in /media/css_secure/
directory.
The script will also keep original file copy. And do the cleanup of no longer used merged css files.