Здравствуйте.
Может, кто подскажет, можно ли такое реализовать на Nginx?
nginx version: nginx/0.7.62 + mod_proxy
Структура:
backend (apache)____________Nginx____________________Client
10.0.0.67<---------------->10.0.0.68 192.168.0.2 <-------------> 192.168.0.5
Nginx server<------------------Client
GET /test.test
backend <------------------ Nginx server
GET /test.test
backend ------------------> Nginx server
200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:51:24 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 962
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:53:27 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:51:24 GMT
Client-Peer: 10.0.0.67:80
Client-Response-Num: 1
Nginx server------------------>Client
200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:51:24 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 958
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:53:24 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:51:24 GMT
Client-Peer: 192.168.0.2:80
Client-Response-Num: 1
Пока не превышено время Expires: Thu, 19 Nov 2009 09:38:53 GMT
nginx отдает эту станицу из кеша. По истечению, конструкция повторяется.
А можно ли сделать немного другую модель?
Первая часть та же, но, после истечения времени жизни страницы:
Не удаляя файла из кеша!
Nginx<------------------Client
GET /test.test
backend <------------------ Nginx server
GET /test.test
Посылаем тот же запрос, но с заголовком
Last-Modified=If-Modified-Since
В данном случае
If-Modified-Since: Wed, 18 Nov 2009 14:04:31 GMT
backend ------------------> Nginx server
304 Not Modified
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:53:32 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:53:32 GMT
Client-Peer: 10.0.0.67:80
Client-Response-Num: 1
Nginx server------------------>Client
200 OK
Cache-Control: max-age=120
Connection: close
Date: Thu, 19 Nov 2009 09:53:32 GMT
Server: Apache/1.3.37 (Unix) mod_plsql/3.0.9.8.5d
Content-Length: 958
Content-Type: text/html; charset=windows-1251
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Last-Modified: Wed, 18 Nov 2009 14:04:31 GMT
Client-Date: Thu, 19 Nov 2009 09:53:32 GMT
Client-Peer: 192.168.0.2:80
Client-Response-Num: 1
и в заголовке закешированного файла, надо заменить заголовок Expires:
На новый
Expires: Thu, 19 Nov 2009 09:55:32 GMT
Что бы продолжать отдавать закешированный контент, а не генерить страницу заново.
А чистку кеша, осуществлять только по приближении к ограничению по месту, тех файлов, где давно просрочен Expires.
C Уважением, Константин.