How do i use Cache Control and ETag to set http headers

Gaurav Manral picture Gaurav Manral · Nov 14, 2014 · Viewed 9.5k times · Source

I want to use Cache Control and ETag in my joomla website as suggested by google. But have no idea how to do that. I googled it a lot but could not find any worty example.

Can anybody tell me how to do that..??

For Cache Control i have found this example, but is this the complete syntax..?? and where to place it in <head> tag of the index.php file??.

Also please tell me the syntax of ETag and the place where to write it.

Answer

David Taiaroa picture David Taiaroa · Nov 14, 2014

You can use your .htaccess file at the root of your website for this. You'll find lots of variations on the specifics, here's a comprehensive one from http://www.siteground.com/tutorials/joomla/joomla-speed.htm#htaccess.

Using a text editor, add the following to your .htaccess file

EDIT If your goal is specifically to improve your YSlow score and you aren't using these tags for any other purpose, it may be better to set the ETag below to:

FileETag none 

Source: https://developer.yahoo.com/performance/rules.html#etags

########## Begin - ETag Optimization
## This rule will create an ETag for files based only on the modification
## timestamp and their size. 
## Note: It may cause problems on your server and you may need to remove it  
## Note: See comments above about why you might want to set the following to FileETag none 
FileETag MTime Size
# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript
# Enable expiration control
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"

# Image files expiration: 1 month after request
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"

ExpiresByType application/smil "now plus 1 month"
# Audio files expiration: 1 month after request
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"

# Movie files expiration: 1 month after request
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"

Alternatively, you will find plenty of extensions which will do a similar thing in the JED
http://extensions.joomla.org/extensions/core-enhancements/performance/cache

Good luck!