Hello.
Looking at my log I've noticed that some pages were not cached. After a
bit of debugging I've noticed that the order in which the HTTP header
are returned from Apache change how NGINX this save the page in the
cache
So a page with this code is *NOT* cached
<?php
header('Content-Type: text/html; charset=UTF-8');
header('Last-Modified: Wed, 22 Feb 2012 14:44:11 GMT');
header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
header("X-Accel-Expires: 600");
header('Cache-Control: no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
Echo "Hello World !";
?>
if I comment/delete the line header('Expires: Wed, 11 Jan 1984 05:00:00
GMT'); the page is cached.
Even if I move header("X-Accel-Expires: 600") before header('Expires:
Wed, 11 Jan 1984 05:00:00 GMT'); the page is cached
Same thing happen for the header Cache-Control. If is before
X-Accel-Expires the page is not cached if is after it is !
The conf for NGINX is very standard and proxy_cache_valid is not
specified.
Is this correct ? Where am I wrong ?
Thanks
--
Simone
on 2012-02-22 17:06
on 2012-02-22 17:28
Hello! On Wed, Feb 22, 2012 at 05:05:32PM +0100, Simone Fumagalli wrote: > header('Expires: Wed, 11 Jan 1984 05:00:00 GMT'); > Even if I move header("X-Accel-Expires: 600") before header('Expires: Wed, 11 Jan 1984 05:00:00 GMT'); the page is cached > Same thing happen for the header Cache-Control. If is before X-Accel-Expires the page is not cached if is after it is ! > > The conf for NGINX is very standard and proxy_cache_valid is not specified. > > Is this correct ? Where am I wrong ? This probably should be counted as a bug (or at least misfeature). Here are what happens: if the Expires header comes first, it disables caching due to being set to date in the past. The X-Accel-Expires header which comes later can't re-enable caching. On the other hand, if X-Accel-Expires comes first, it will set cache expiration time. The Expires and Cache-Control headers later will be just ignored as cache expiration time is already set. As a workaround you may want to always sent X-Accel-Expires first, or explicitly ignore other headers with proxy_ignore_headers. Maxim Dounin
on 2012-02-22 17:39
On 02/22/2012 05:28 PM, Maxim Dounin wrote:
> This probably should be counted as a bug (or at least misfeature).
Ciao, do you think you will fix/change this behaviour ?
Just to know if and how change my configurations
thanks
--
Simone
on 2012-02-22 18:04
Hello! On Wed, Feb 22, 2012 at 05:39:22PM +0100, Simone Fumagalli wrote: > On 02/22/2012 05:28 PM, Maxim Dounin wrote: > > This probably should be counted as a bug (or at least misfeature). > > Ciao, do you think you will fix/change this behaviour ? > Just to know if and how change my configurations Eventually this will be fixed, but there are no immediate plans to and it's relatively low priority. Maxim Dounin
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.