title: Force the browser to cache a .php
body: <p>I need the browser to cache a large, mostly static .php file. I open it via ajax and want to add it to the current page.</p>
  
  <p>After some research if found <a href="http://www.electrictoolbox.com/php-caching-headers/" rel="nofollow">this</a></p>
  
  <pre><code>$seconds_to_cache = 3600;
  $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
  header("Expires: $ts");
  header("Pragma: cache");
  header("Cache-Control: max-age=$seconds_to_cache");
  </code></pre>
  
  <p>This works for IE, but not for chrome and firefox.</p>
  
  <p>Here is the request</p>
  
  <pre><code>Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Encoding gzip, deflate
  Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
  Cache-Control   max-age=0
  Connection  keep-alive
  Content-Type    application/x-www-form-urlencoded
  Cookie  PHPSESSID=5dkvr42f4it8pnnnqpesj6l413
  Host    localhost
  Referer http://localhost/mifa/Suche.php
  User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
  charset utf-8
  </code></pre>
  
  <p>and here the response header</p>
  
  <pre><code>Cache-Control   max-age=3600
  Connection  Keep-Alive
  Content-Type    text/html
  Date    Thu, 05 Jul 2012 15:28:22 GMT
  Expires Thu, 05 Jul 2012 16:28:22 GMT
  Keep-Alive  timeout=5, max=91
  Pragma  cache
  Server  Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
  Transfer-Encoding   chunked
  X-Powered-By    PHP/5.3.8
  </code></pre>
  
  <p>What do i need to change?</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>Apparently, only IE does not append the Cache-Control max-age=0 to the request.</p>
  
  <p>Here is the JS Function of the request</p>
  
  <pre><code>url = "includes/Orte.php";
  obj.onreadystatechange = rState;
  obj.open("GET", url, true);
  obj.setRequestHeader("Pragma", "");
  obj.setRequestHeader("Cache-Control", "");
  obj.setRequestHeader("charset", "utf-8");
  obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  obj.setRequestHeader("Connection", "close");
  obj.send();
  
  function rState(){
      if(obj.readyState == 4){
          if (obj.status == 200){
              //alert("Response Text Ajax:\n" + obj.responseText + "\nEnd Response Text");
          }
      }
  }
  </code></pre>