NYCPHP Meetup

NYPHP.org

[nycphp-talk] Overwriting Cache Headers

Tom Melendez tom at supertom.com
Sun Sep 14 11:15:48 EDT 2008


Have you tried overwriting the header with the header() function,
either by making it blank ("Pragma:") or with the desired value?

Tom
http://www.liphp.org

On Sun, Sep 14, 2008 at 12:21 AM, justin <justin at justinhileman.info> wrote:
> On Sat, Sep 13, 2008 at 11:41 PM, Michael B Allen <ioplex at gmail.com> wrote:
>> I want to send css and js files from a PHP script so I want to allow caching.
>>
>> But PHP always sends the following headers:
>>
>> Array
>> (
>>    [0] => X-Powered-By: PHP/5.2.6
>>    [1] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
>>    [2] => Cache-Control: no-store, no-cache, must-revalidate,
>> post-check=0, pre-check=0
>>    [3] => Pragma: no-cache
>> )
>>
>> AFAIK it's not possible to remove or suppress headers but I can of
>> course overwrite them.
>>
>> The question is: with what?
>>
>> For the Expires header I suppose it could just be the RFC822 time for
>> now + 1 hour.
>>
>> For the Cache-Control header it's less clear. Here's the spec but I'm
>> still trying to decipher the meaning of each directive:
>>
>>  http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
>>
>> For the Pragma header I'm largely clueless.
>>
>> Does anyone know what values for these headers would be equivalent to
>> not specifying them at all?
>>
>
> Is there any particular reason you need PHP to send the files? You do
> have a couple more options. I usually use PHP to write a static file,
> then let Apache serve it up as an actual css/js file. You can even use
> sweet mod_rewrite rules to hit the php file if the requested css/js
> file isn't present. If you're just reading a file from disk and
> spitting it out with PHP, you might want to have PHP send your
> favorite flavor of redirect header instead.
>
> As far as which headers to send, I poked around a bit. You'd be
> surprised how many of the big guys just dump the css on every single
> page... But a few that served actual files had headers like the
> following. Note that all these css files are coming from a CDN. For
> what that's worth.
>
>
> Headers for an Amazon.com css file:
>
>        Cache-Control: max-age=630720000
>        Date: Sun, 14 Sep 2008 04:03:45 GMT
>        Content-Type: text/css
>        Last-Modified: Thu, 28 Aug 2008 00:32:03 GMT
>        Server: Server
>        X-Cache-Lookup: MISS from cdn-images.amazon.com:8080
>        X-Cache: MISS from cdn-images.amazon.com
>        Content-Encoding: deflate
>        Expires: Wed, 23 Aug 2028 00:39:01 GMT
>        Content-Length: 2018
>        X-WR-MODIFICATION: Content-Length
>
>
> And one from Yahoo.com:
>
>        Date: Thu, 11 Sep 2008 21:50:36 GMT
>        Cache-Control: max-age=315360000
>        Expires: Sun, 09 Sep 2018 21:50:36 GMT
>        Last-Modified: Mon, 17 Mar 2008 17:19:43 GMT
>        Accept-Ranges: bytes
>        Vary: Accept-Encoding
>        Content-Type: text/css
>        Content-Encoding: gzip
>        Age: 195294
>        Content-Length: 1921
>        Server: YTS/1.17.8
>
>
> Twitter seems to use a more reasonable cache length, you might try
> something like this:
>
>        Date: Sun, 14 Sep 2008 04:07:46 GMT
>        Server: Apache
>        Last-Modified: Fri, 12 Sep 2008 00:23:22 GMT
>        Accept-Ranges: bytes
>        Cache-Control: max-age=86400
>        Expires: Mon, 15 Sep 2008 04:07:46 GMT
>        Vary: Accept-Encoding
>        Content-Encoding: gzip
>        Content-Length: 6509
>        Content-Type: text/css
>
>
> I wasn't able to find a css file that returned a Pragma header.
> Perhaps you could try "Pragma: " ?
>
> justin
> --
> http://justinhileman.com
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
>
> NYPHPCon 2006 Presentations Online
> http://www.nyphpcon.com
>
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php
>



More information about the talk mailing list