Tuesday, 13 April 2010

Debian: не работает Apache Mod_Expires

Имеем вот такие настройки в .htaccess:

62 <IfModule mod_expires.c>
63 # Enable expirations.
64 ExpiresActive On
65
66 # Cache all files for 2 weeks after access (A).
67 ExpiresDefault A1209600
68
69 # Do not cache dynamically generated pages.
70 ExpiresByType text/html A1
71 </IfModule>


То есть все файлы с типом text/html должны выдаваться с заголовками, разрешающими их кэширование, это можно проверять командой (обязательно, чтобы 1.html был статикой, иначе никаких директив мы не поулчим! Апач не дописывает директивы к выдаче скриптов):
wget http://domain.ru:80/1.html --server-response -O/dev/null


Но выдаются только следующие заголовки на бэкэнде:

HTTP/1.1 200 OK
Date: Tue, 13 Apr 2010 07:21:32 GMT
Server: Apache
Last-Modified: Tue, 13 Apr 2010 07:19:25 GMT
ETag: "5258883-5-4841914cef940"
Accept-Ranges: bytes
Content-Length: 5
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


А на фронтэнде nginx:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 13 Apr 2010 07:21:34 GMT
Content-Type: text/html
Connection: keep-alive
Last-Modified: Tue, 13 Apr 2010 07:19:25 GMT
ETag: "5258883-5-4841914cef940"
Accept-Ranges: bytes
Content-Length: 5
Vary: Accept-Encoding


Как видите, ничего близкого к кэшированию тут нету.

Чтобы кэширование все же заработало, необходимо включить соответствующий модуль:
a2enmod expires
/etc/init.d/apache restart


После этого получаем от бэкэнда:

HTTP/1.1 200 OK
Date: Tue, 13 Apr 2010 07:24:53 GMT
Server: Apache
Last-Modified: Tue, 13 Apr 2010 07:19:25 GMT
ETag: "5258883-5-4841914cef940"
Accept-Ranges: bytes
Content-Length: 5
Cache-Control: max-age=1
Expires: Tue, 13 Apr 2010 07:24:54 GMT
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


И фронтэнда:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 13 Apr 2010 07:25:20 GMT
Content-Type: text/html
Connection: keep-alive
Last-Modified: Tue, 13 Apr 2010 07:19:25 GMT
ETag: "5258883-5-4841914cef940"
Accept-Ranges: bytes
Content-Length: 5
Cache-Control: max-age=1
Expires: Tue, 13 Apr 2010 07:25:21 GMT
Vary: Accept-Encoding


Как видите, появились новые директивы:
Cache-Control: max-age=1
Expires: Tue, 13 Apr 2010 07:25:21 GMT

1 comment:

  1. А если используем прокси ngnix как настроить тогда?

    ReplyDelete

Note: only a member of this blog may post a comment.