Wasim Karani
Wasim Karani

Reputation: 8886

Add Expire Headers in php can't make it work

I have Yslow add-on installed

alt text

When I checks my application in Yslow I get Add Expires headers which I don't know

alt text

I searched for relevant questions in SO and also Google I found this method appropriate

<?
    header("Expires:".gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
    header("Cache-Control: no-cache");
    header("Pragma: no-cache");
    ob_start();
    session_cache_limiter('public');
    session_start();
?>
<html>

But still it shows me same

As i am newbie I don't know much about .htaccess

Please help me improve applications performance

Thanks in advance

Wazzy

Upvotes: 16

Views: 7162

Answers (1)

Jake N
Jake N

Reputation: 10583

That will only set it for your page content and not things like images and css files, i noticed on your screenshot it says 42 files, presumably these are your images, css, js etc.

Try this in your .htaccess file, note this will only work if you have mod_expires and mod_headers enabled in Apache:

<ifModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 604800 seconds"
  ExpiresByType text/javascript "access plus 216000 seconds"
  ExpiresByType application/x-javascript "access plus 216000 seconds"
  ExpiresByType application/javascript "access plus 216000 seconds"  
</ifModule>

<ifModule mod_headers.c>
  <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>
  <filesMatch "\\.(css)$">
    Header set Cache-Control "max-age=604800, public"
  </filesMatch>
  <filesMatch "\\.(js)$">
    Header set Cache-Control "max-age=216000, private"
  </filesMatch>
  <filesMatch "\\.(xml|txt)$">
    Header set Cache-Control "max-age=216000, public, must-revalidate"
  </filesMatch>
  <filesMatch "\\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, private, must-revalidate"
  </filesMatch>
</ifModule>

Upvotes: 15

Related Questions