title: Forcing Codeigniter to work with varnish
body: <p>I have a codeiginter application that already use codeiginter build-in caching, I applied Varnish as a new caching layer. But as i can see from varnishstat it's not making that difference. </p>
  
  <pre><code>Hitrate ratio:        1        1        1
  Hitrate avg:     0.0480   0.0480   0.0480
  </code></pre>
  
  <p>I think thats because of Codeiginter cookies and HTTP Headers that are being sent back. </p>
  
  <p>This is the http request coming from varnish.</p>
  
  <pre><code>Accept-Ranges:bytes
  Age:0
  Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Connection:keep-alive
  Content-Encoding:gzip
  Content-Length:1755
  Content-Type:text/html
  Date:Mon, 29 Jul 2013 07:25:59 GMT
  Expires:Thu, 19 Nov 1981 08:52:00 GMT
  Pragma:no-cache
  Server:Apache/2.2.22 (Ubuntu)
  Set-Cookie:ci=%2BEZFRauewyNnl3CXHE0cmz6F3G3moadilt5vXu5gghKXkWm4gg0JObnF2Etq6J5rl3XVigbF0je3funibpvEi4X%2BT3rS2VmazGG3T4Vm1%2B8YcbqRgL4xuMcxybndqJy%2BU9mNmsJjOgmYEZ8oPG8BKOtMaxNiMHmgmbBydxt3SzKfFfFUOydFx%2BeeJ7P1WE7V10m6GyfnFO5DrFYNsE%2F37WNAI%2Bpux%2Fwwch5B4DH1%2F6wssPm%2BNwsLQ1%2FBd44hgUXe3mMzzcqvxNjKqs0gjuwzwPT4nibEHirfaJ7TMVGObMjdrbREnoYS2gwoN15cCeKgXmTJQI2vvTuPcdtZVCjcAX6OvTy491HdIvQIdKRhX2BNi8d7ygo%2F7n5T6%2FN%2B0IohNN9iZ%2Fh959W%2Fz4azEJPfTrluucf6cLnlp2T2zb%2Fb3XroWuPqguk4wMpsAstfLsSfA%2F6yEi4Hph%2BPFxX%2BhyBazs11LJ38FA0flWtYY%2Bk%2B6yoF13sTaENN2pWj0bKDTtres9E4y3xMPr%2FZaO78WRA9CccDzcQfbZ3bZUqoXg4HmX%2BHDHiYPLD6uFpnC28LuDrCSbgXFIlhDrC8j65sxNSKhnzlUP7Konr%2FKRfKNzrgtWHBEzuXArW%2BlgIg1MzaW3GIkRy1gr16ZUjIiv7CCx7Y2twAfKOm4t00MvrTcFoxBPN1lzoasNyRLMIvshU8heWZHy17OPEapuO6N%2BuMl9L8LqU0%2FF%2BUeUDyFVwLG39LGkIVuF93VsIYEp6w2UwtccX4OO4P2uwJEoAJMMqUE%2FztELpCv%2BkfRAiub48n%2BRxK%2FhgUHw1LWsWIPv3xngq3MI8ypWCqkWLjPuu5dc%2FdOd3BSW2MYcBwacoB5CEOPBHGq3hw1QSZfY330hkLuyQPHxkh%2FDTija%2FN2Rz6z47JorsCqHGDBK6%2BPswBWvYZeMd0VMD%2F95j%2BFibi6rBqL3hoE%2BDgcfCdly%2FYH9py%2Fe%2Fa0AUiIINTK8EPtpuKdC8dLhKo2jI5J4e1ifZuWjVd3VnL2CvX; path=/
  Vary:Accept-Encoding
  Via:1.1 varnish
  X-Powered-By:PHP/5.3.10-1ubuntu3.5
  X-Varnish:1353481467
  </code></pre>
  
  <p>I noticed difference things:</p>
  
  <ol>
  <li>No matter how hard i try codeiginter won't change the
  <code>Cache-Control</code>, <code>Age</code>, <code>Expires</code> until i set them manually</li>
  <li>Codeiginiter Sent an old date 1981 I doubled checked the date on my
  server it's correct</li>
  <li>Codeiginiter keep changing the cookies almost each request. </li>
  </ol>
  
  <p>In my app i have several pages that require username/password but i'm trying to focus first on getting the public pages to be cached. after that I will check the account related pages.</p>
  
  <p>I'm testing on this code:</p>
  
  <pre><code>//$this-&gt;output-&gt;set_header("Cache-Control:public, max-age=9000");
  //$this-&gt;output-&gt;set_header("Vary: Accept-Encoding,Cookie,User-Agent");  
  $this-&gt;output-&gt;cache(2400);
  $this-&gt;load-&gt;view("test");
  </code></pre>