DanC
DanC

Reputation: 1307

Compressing CSS and JS without mod_gzip and mod_deflate

I would like to compress the CSS and JS files on my server to minimise load times, problem.

My hosting is with Streamline.net (big mistake, never go there) who will not activate mod_gzip and mod_deflate due to security issues.

Does anyone have another way to compress these types of files (and image files too if poss) without going the way of mod_gzip and mod_deflate.

Answers would be hugely welcome.

Upvotes: 4

Views: 1392

Answers (5)

Piskvor left the building
Piskvor left the building

Reputation: 92752

You can run your files through a script which would gzip them for you and add appropriate expiration headers. Either set up an URL rewrite, or rewrite the URLs manually:

<script src="js/somescript.js"></script>

becomes

<script src="compress.php?somescript.js"></script>

and in compress.php, you can do something like

<?php
$file = 'js/' . basename($_SERVER['QUERY_STRING']);
if (file_exists($file)) {
    header ('Last-Modified: ' . date('r',filemtime($file));
    header ('Content-Type: text/javascript'); // otherwise PHP sends text/html, which could confuse browsers
    ob_start('ob_gzhandler');
    readfile($file);
} else {
    header('HTTP/1.1 404 Not Found');
}

Obviously this can be extended to also provide HTTP caching, and/or on-the-fly minification, further speeding up your visitors' browsing.

Upvotes: 2

Daniel Vassallo
Daniel Vassallo

Reputation: 344291

Yes, the answer is Minification.

Obviously, it will not compress as much as gzip or deflate. But it helps, and it is very easy to do with the right tools.

Upvotes: 4

Paul D. Waite
Paul D. Waite

Reputation: 98786

Instead of getting mod_gzip to gzip your CSS and JavaScript files dynamically, you can gzip them yourself, then upload them.

This does introduce another step before you upload CSS and JavaScript, but it works, and maybe even saves a tiny bit of server processing time for each request compared to mod_gzip.

On Mac OS X, gzipping a file on the command line is as easy as, e.g.:

gzip -c styles.css > styles-gzip.css

Make sure these files get served with the right content-type header though.

Upvotes: 2

Adrian Grigore
Adrian Grigore

Reputation: 33318

Just as a sidenote: Compressing images would not be beneficial if these are already saved in a compressed format with the maximum compression that still looks good to the user.

Upvotes: 1

Gumbo
Gumbo

Reputation: 655189

Most programming languages support some data or file compression formats like ZLIB or GZIP. So you could use a programming language to compress your files with one of these formats.

Upvotes: 0

Related Questions