Re: PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since" headers
| From: | Frank M. Kromann | Date: | Wed, 29 Nov 2000 02:42:52 +0000 |
| Subject: | Re: PHP 4.0 Bug #8017: PHP ignores "If-Modified-Since" headers | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-39441@lists.php.net to get a copy of this message | ||
Hi All,
I use "Last-Modified" and an ETAG header with my php scripts. I use the ETAG header to
check if data has been modified in the database, if not I have the php script return a HTTP 304
header alowing the browser to use the page from cache.
This works fine for me.
I dont think anye webserver would be able to detect this for all php scrpts and keep the contents in
cache (dynamic web pages does not exist on the harddisk).
- Frank
>From: jr-php@quo.to
>Operating system: Linux
>PHP version: 4.0.3pl1
>PHP Bug Type: Apache related
>Bug description: PHP ignores "If-Modified-Since" headers
>
>PHP: 4.0.3p1
>Apache: 1.3.14
>Browser: IE 5.5 SP1
>
>Because I want my PHP pages to be cached, my PHP script sends out a Last-Modified header (entire
>code follows):
>
><?php
>Header ("Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT");
>?>
>Test...
>
>One would think that this would be enough to get a web browser to cache the page, but evidently
>it is not. Examining my web server's access log shows that each time the page is subsequently
>requested (e.g. by pressing Refresh), it sends back a "200 OK" response code instead of a
>"304 Not Modified" as it should. In other words, the server is sending back a fresh copy
>of the page every time.
>
>However, if I do a similar thing using a CGI script, the server *does* send back "304"
>codes as it should (entire code follows):
>
>#!/bin/sh
>echo "Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT"
>echo "Content-Type: text/html"
>echo ""
>echo "Test..."
>
>In both cases, an "If-Modified-Since" header is being sent to the server. Yet the PHP
>script appears to ignore it completely and send a fresh page, while the very simple CGI shell script
>doesn't.
>
>P.S. At the bottom of this are transcripts of the HTTP requests for the PHP & CGI scripts.
>Notice how PHP sends back a fresh page even though the If-Modified-Since date is the same as the
>Last-Modified date.
>
>P.P.S. I just noticed that this problem affects PHP's own web site too! The page
>http://www.php.net/ returns a Last-Modified header, but browsers
>receive a fresh copy of the page every time since If-Modified-Since is ignored.
>
>
>--- PHP script ---
>
>GET /test.php HTTP/1.0
>If-Modified-Since: Mon, 27 Nov 2000 00:00:00 GMT
>
>HTTP/1.1 200 OK
>Date: Mon, 27 Nov 2000 20:41:29 GMT
>Server: Apache/1.3.14 (Unix) PHP/4.0.3pl1
>X-Powered-By: PHP/4.0.3pl1
>Last-Modified: Mon, 27 Nov 2000 00:00:00 GMT
>Connection: close
>Content-Type: text/html
>
>Test...
>
>
>--- CGI shell script ---
>
>GET /cgi-bin/test.cgi HTTP/1.0
>If-Modified-Since: Mon, 27 Nov 2000 00:00:00 GMT
>
>HTTP/1.1 304 Not Modified
>Date: Mon, 27 Nov 2000 20:41:46 GMT
>Server: Apache/1.3.14 (Unix) PHP/4.0.3pl1
>Connection: close
>
>
>--
>Edit Bug report at: http://bugs.php.net/?id=8017&edit=1
>
>
>
>--
>PHP Development Mailing List <http://www.php.net/>
>To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
>For additional commands, e-mail: php-dev-help@lists.php.net
>To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>
>