[thelist] Website speed smart practices (was gzip and far future expires header )
Benjamin Hawkes-Lewis
bhawkeslewis at googlemail.com
Fri Jan 16 02:12:36 CST 2009
On 16/1/09 04:58, Bob Meetin wrote:
> Post should have been: Website speed smart practices
>
> Background: I use both websiteoptimization.com and YSlow to review
> websites. I could use some clarification on purpose and approach to a
> couple optimization techniques:
>
> Q1) Is there a difference in effect/purpose on setting header expires
> in a PHP file vs. in the .htaccess?
It makes no difference to the client.
> Q2) gzip vs minify or removing white space - Example - you have a
> javascript or php file with comments and perhaps white space.
> If you use gzip as in the above PHP script, is there any further
> 'significant' savings by stripping the file of white space.
Define "significant".
$ curl -s -o example.html http://www.bbc.co.uk/
$ wc -c example.html
112674 example.html
$ perl -p -e "s/\s{2}/ /g" example.html | wc -c
105872
$ gzip --stdout example.html | wc -c
22946
$ perl -p -e "s/\s{2}/ /g" example.html | gzip --stdout | wc -c
22458
$ perl -e 'print ( ( ( 22946 - 22458 ) / 22946 ) * 100 ); print "%\n";'
2.12673232807461%
Replacing every instance of two whitespace characters with a single
space and then gzipping results in a saving of about 2% over just gzipping.
Note that stripping whitespace is a lot more complicated than the above
regular expression since some whitespace in code is significant.
> If so is
> there a utility that can be downloaded to do this rather than doing it
> manually?
For JS and CSS, examples include:
* http://developer.yahoo.com/yui/compressor/ (Java)
* http://dojotoolkit.org/docs/shrinksafe (Java)
* http://code.google.com/p/cssmin/ (PHP)
* http://www.crockford.com/javascript/jsmin.html (various languages)
Automatically stripping whitespace from HTML is problematic; potentially
_any_ intra-element whitespace in HTML can be significant because of:
http://www.w3.org/TR/CSS21/text.html#white-space-prop
> I read something about minify where you do something like coming css or
> js files in a list like:
>
> <link rel="stylesheet" href="main.css, layout.css" type="text/css" /> or
> <link rel="stylesheet" href="main.php, layout.php" type="text/css" />
>
> Any significant effect?
Yes. Concatenating CSS or JS assets cuts down on HTTP requests:
http://developer.yahoo.com/performance/rules.html#num_http
> Q3) With many CMS systems such as Joomla, the way the template system is
> built (off the shelf), you end up with a lot of HTTP requests as a
> result of many modules accompanied by both stylesheets and javascript
> files. Add in a few images and you could easily have 40 HTTP requests.
> What is a good way to handle this if it cannot be avoided?
I don't see how Joomla can absolutely prevent you concatenating JS and
CSS or spriting background images (
http://spritegen.website-performance.org/ ), but if you must request
each asset separately plenty of the other Yahoo! performance suggestions
are still applicable:
http://developer.yahoo.com/performance/
For example: use a content delivery network like Amazon's S3 to serve
each asset as locally as possible.
> Q4) Yslow report that images, js and css files have Etags? If it should
> be done, how do you configure or disable them?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19
http://www.php.net/header
http://httpd.apache.org/docs/2.2/mod/core.html#fileetag
http://developer.yahoo.com/performance/rules.html#etags
--
Benjamin Hawkes-Lewis
More information about the thelist
mailing list