htaccess Tricks #3 – Performance
Improving Performance via AllowOverride
Limit the extent to which htaccess files decrease performance by enabling AllowOverride only in required directories. For example, if AllowOverride is enabled throughout the entire site, the server must dig through every directory, searching for htaccess files that may not even exist. To prevent this, we disable the AllowOverride in the site’s root htaccess file and then enable AllowOverride only in required directories via the server config file (refer to this section for more information). Note: if you do not have access to your site’s server config file and also need AllowOverride privileges, do not use this directive:
# increase performance by disabling allowoverride
AllowOverride None
Improving Performance by Passing the Character Set
Prevent certain 500 error displays by passing the default character set parameter before you get there. Note: replace the “utf-8” below with the charset that your site is using:
# pass the default character set
AddDefaultCharset utf-8
Improving Performance by Preserving Bandwidth
To increase performance on PHP enabled servers, add the following directive:
# preserve bandwidth for PHP enabled servers
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>
Disable the Server Signature
Here we are disabling the digital signature that would otherwise identify the server:
# disable the server signature
ServerSignature Off
Set the Server Timezone
Here we are instructing the server to synchronize chronologically according to the time zone of some specified state:
# set the server timezone
SetEnv TZ America/Washington
Set the Email Address for the Server Administrator
Here we are specifying the default email address for the server administrator:
# set the server administrator email
SetEnv SERVER_ADMIN default@domain.com
Improve Site Transfer Speed by Enabling File Caching
The htaccess genius over at askapache.com explains how to dramatically improve your site’s transfer speed by enabling file caching 3. Using time in seconds* to indicate the duration for which cached content should endure, we may generalize the htaccess rules as such (edit file types and time value to suit your needs):
# cache images and flash content for one month
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>
# cache text, css, and javascript files for one week
<FilesMatch “.(js|css|pdf|txt)$”>
Header set Cache-Control “max-age=604800″
</FilesMatch>
# cache html and htm files for one day
<FilesMatch “.(html|htm)$”>
Header set Cache-Control “max-age=43200″
</FilesMatch>
# implement minimal caching during site development
<FilesMatch “\.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$”>
Header set Cache-Control “max-age=5″
</FilesMatch>
# explicitly disable caching for scripts and other dynamic files
<FilesMatch “\.(pl|php|cgi|spl|scgi|fcgi)$”>
Header unset Cache-Control
</FilesMatch>
# alternate method for file caching
ExpiresActive On
ExpiresDefault A604800 # 1 week
ExpiresByType image/x-icon A2419200 # 1 month
ExpiresByType application/x-javascript A2419200 # 1 month
ExpiresByType text/css A2419200 # 1 month
ExpiresByType text/html A300 # 5 minutes
# disable caching for scripts and other dynamic files
<FilesMatch “\.(pl|php|cgi|spl|scgi|fcgi)$”>
ExpiresActive Off
</FilesMatch>
* Convert common time intervals into seconds:
300 = 5 minutes
2700 = 45 minutes
3600 = 1 hour
54000 = 15 hours
86400 = 1 day
518400 = 6 days
604800 = 1 week
1814400 = 3 weeks
2419200 = 1 month
26611200 = 11 months
29030400 = 1 year = never expires
Set the default language and character set
Here is an easy way to set the default language for pages served by your server (edit the language to suit your needs):
# set the default language
DefaultLanguage en-US
Likewise, here we are setting the default character set (edit to taste):
# set the default character set
AddDefaultCharset UTF-8
Declare specific/additional MIME types
# add various mime types
AddType application/x-shockwave-flash .swf
AddType video/x-flv .flv
AddType image/x-icon .ico
Send character set and other headers without meta tags
# send the language tag and default character set
# AddType ‘text/html; charset=UTF-8′ html
AddDefaultCharset UTF-8
DefaultLanguage en-US
Limit server request methods to GET and PUT
# limit server request methods to GET and PUT
Options -ExecCGI -Indexes -All
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD) RewriteRule .* – [F]
Selectively process files according to server request method
# process files according to server request method
Script PUT /cgi-bin/upload.cgi
Script GET /cgi-bin/download.cgi
Execute various file types through a cgi script
For those special occasions where certain file types need to be processed with some specific cgi script, let em know who sent ya:
# execute all png files via png-script.cgi
Action image/png /cgi-bin/png-script.cgi
Related Posts:
Tags: htaccess, performance, Tricks
16.Oct.08
Server
You can leave a response, or trackback from your own site.