ãã®èšäºã®å 容ïŒaïŒå šããŒãžãã£ãã·ã¥ã®èœãšãç©Žã bïŒããŒããŒã·ã§ã³ã䌎ããã£ãã·ã¥ã cïŒãã£ãã·ã¥ãããããŒãžã«åçãªããŠã£ã³ããŠããäœæããŸãã
nginx + fastcgi_phpãã³ãã«ã䜿çšããŠãããšä»®å®ããŸãã nginx + apache + mod_phpã䜿çšããŠããå Žåããã£ã¬ã¯ãã£ãåãfastcgi_cache *ãšproxy_cache *ã«çœ®ãæããã ãã§ã
ããŒãžãPHPåŽã§ãã£ãã·ã¥ãããnginxåŽã§ãã£ãã·ã¥ããããéžæããå ŽåãnginxãéžæããŸãã ãŸããé£ãªãããé«è² è·ãã«ã€ããŠã¹ããŒãã«è©±ãããšãªãã1ç§ããã5ã1äžä»¶ã®ãªã¯ãšã¹ããéä¿¡ã§ããŸãã 第äºã«ãnginxã¯ãã£ãã·ã¥ã®ãµã€ãºãåå¥ã«ç£èŠããé³è åããå Žåãšã䜿çšé »åºŠã®äœãããŒã¿ãæ··éãããå Žåã®äž¡æ¹ã§ãã£ãã·ã¥ãæ¶å»ããŸãã
ããŒãžå šäœã®ãã£ãã·ã¥
ãµã€ãã®ã¡ã€ã³ããŒãžãåçã«çæãããŠããã£ãã«å€æŽãããªãå Žåãnginxã«ãã£ãã·ã¥ããããšã§ãµãŒããŒã®è² è·ãå€§å¹ ã«æžããããšãã§ããŸãã ãã©ãã£ãã¯ãå€ãå Žåããã£ãã·ã¥ãéåžžã«é«éã«åäœãããããçæçãªãã£ãã·ã³ã°ïŒ5å以äžïŒã§ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã ããŒãžã30ç§ã ããã£ãã·ã¥ããåŸã§ããããŒã¿ãæŽæ°ãããã€ãããºã ãç¶æããªããããµãŒããŒã®å€§å¹ ãªãªãããŒããå®çŸã§ããŸãïŒå€ãã®å Žåã30ç§ã«1åæŽæ°ããã ãã§ååã§ãïŒã
ããšãã°ã次ã®ããã«ã¡ã€ã³ããŒãžããã£ãã·ã¥ã§ããŸãã
fastcgi_cache_path / var / cache / nginx levels = keys_zone = wholepageïŒ50m; ... ãµãŒããŒ{ ... å Žæ/ { ... fastcgi_pass 127.0.0.1:9000; ... ïŒãã£ãã·ã¥ããªã³ã«ããŠããã£ãã·ã¥ããŒãæ éã«éžæããŸãã fastcgi_cache wholepage; fastcgi_cache_valid 200 301 302 304 5m; fastcgi_cache_key "$ request_method | $ http_if_modified_since | $ http_if_none_match | $ host | $ request_uri"; ïŒç°ãªããŠãŒã¶ãŒãåãã»ãã·ã§ã³Cookieãåãåããªãããšãä¿èšŒããŸãã fastcgi_hide_header "Set-Cookie"; ïŒãšã«ãããnginxã«ããŒãžããã£ãã·ã¥ããã ïŒPHPã§å ¬éãããããããŒããã£ãã·ã¥ããŸãã fastcgi_ignore_headers "Cache-Control" "Expires"; } }
ãã®èšå®ã®ãã¹ãŠã®è¡ãè¡ã§æžãããŠãããšèšã£ãŠããç§ã¯å€§ããã«ã¯èªåŒµããŸããã ããã«ã¯å€ãã®èœãšãç©ŽããããŸããããããã¹ãŠãèŠãŠã¿ãŸãããã
fastcgi_cache_pathïŒãããã°ã®å®¹æããéèŠã§ã
fastcgi_cache_path / var / cache / nginx levels = keys_zone = wholepageïŒ50m;
fastcgi_cache_pathãã£ã¬ã¯ãã£ãã§ãã¬ãã«ã®ã空ã®ãå€ãèšå®ããŸãã ããã«ããããã©ãŒãã³ã¹ããããã«äœäžããŸããïŒãã¡ã€ã«ã¯ãã£ã¬ã¯ããªã«åå²ããã«/ var / cache / nginxã«çŽæ¥äœæãããŸãïŒããã£ãã·ã¥ã®åé¡ããããã°ããã³èšºæããã®ãã¯ããã«ç°¡åã§ãã ç§ãä¿¡ããŠãããªãã¯/ var / cache / nginxã«ç»ããããã«äœåä¿åãããŠããããèŠãªããã°ãªããªãã§ãããã
fastcgi_cache_validïŒå¿çã³ãŒã304ããã£ãã·ã¥ãã
fastcgi_cache_valid 200 301 302 304 5m;
fastcgi_cache_validãã£ã¬ã¯ãã£ãã§ã¯ãæšæºã³ãŒã200 OKã301 Moved Permanentlyã302 Foundã ãã§ãªãã304 Not Modifiedã匷å¶çã«ãã£ãã·ã¥ããŸãã ãªãã§ïŒ 304ã®æå³ãæãåºããŸããããããã¯ã2ã€ã®å Žåã«ç©ºã®å¿çæ¬æã§çºè¡ãããŸãã
- ãã©ãŠã¶ããIf-Modified-SinceïŒdateãããããŒãéä¿¡ããå Žåãæ¥ä»ã¯ãLast-ModifiedïŒdateãå¿çããããŒã®å€ä»¥äžã§ãã ã€ãŸã ã¯ã©ã€ã¢ã³ãã¯æ¬¡ã®ããã«å°ããŸãããããããæ°ããããŒãžã§ã³ã¯ãããŸããïŒ ããã§ãªãå Žåã¯ã304ãè¿ããŠãã©ãã£ãã¯ãç¯çŽããŸãã ããã°ãããŒãžã®æ¬æãæããŠãã ããã
- ãã©ãŠã¶ããIf-None-MatchïŒhashãããããŒãéä¿¡ããå Žåãããã·ã¥ã¯å¿çããããŒå€ãETagïŒhashããšäžèŽããŸãã ã€ãŸã ã¯ã©ã€ã¢ã³ãã¯æ¬¡ã®ããã«å°ããŸãããããŒãžã®çŸåšã®ããŒãžã§ã³ã¯ãååãªã¯ãšã¹ããããã®ãšç°ãªããŸããïŒ ããã§ãªãå Žåã¯ã304ãè¿ããŠãã©ãã£ãã¯ãç¯çŽããŸãã ãããããªããããŒãžã®æ¬æãæããŠãã ããã
fastcgi_cache_keyïŒäŸåé¢ä¿ãæ éã«æ±ã
fastcgi_cache_key "$ request_method | $ http_if_modified_since | $ http_if_none_match | $ host | $ request_uri";
ç¹ã«æ³šç®ãã¹ãã¯ãfastcgi_cache_keyãã£ã¬ã¯ãã£ãã®å€ã§ãã ãã®ãã£ã¬ã¯ãã£ãã®æå°äœæ¥å€ãæå®ããŸããã å³åŽã®ã¹ããããå·ŠåŽã®ã¹ããããå Žåã«ãã£ãŠã¯ããã£ãã·ã¥ããã誀ã£ããããŒã¿ãåä¿¡ãå§ããŸãã ã ããïŒ
- å¿ èŠãª$ request_methodãžã®äŸå ã€ã³ã¿ãŒãããã§ã®HEADãªã¯ãšã¹ãã¯éåžžã«äžè¬çã§ãã HEADãªã¯ãšã¹ããžã®å¿çã«ããã£ãå«ãŸããããšã¯ãããŸããã $ request_methodã®äŸåé¢ä¿ãåé€ãããšãHEADã¡ãœããã䜿çšããŠã¡ã€ã³ããŒãžãèŠæ±ããåã«èª°ããGETã§ç©ºã®ã³ã³ãã³ããååŸããå¯èœæ§ããããŸãã
- $ http_if_modified_sinceãžã®äŸåæ§ã¯ã304 Not Modifiedã¬ã¹ãã³ã¹ãæã€ãã£ãã·ã¥ããéåžžã®GETãªã¯ãšã¹ããè¡ãã¯ã©ã€ã¢ã³ãã«èª€ã£ãŠäžããããªãããã«ããããã«å¿ èŠã§ãã ããããªããšãã¯ã©ã€ã¢ã³ãã¯ãã£ãã·ã¥ãã空ã®å¿çãåãåãå ŽåããããŸãã
- $ http_if_none_matchã§ãåãã§ãã 空çœã®ããŒãžã顧客ã«æäŸããªãããã«ä¿èšŒããå¿ èŠããããŸãïŒ
- æåŸã«ã$ hostããã³$ request_uriãžã®äŸåé¢ä¿ã«ã¯ã³ã¡ã³ãã¯äžèŠã§ãã
fastcgi_hide_headerïŒã»ãã¥ãªãã£åé¡ã®è§£æ±º
fastcgi_hide_header "Set-Cookie";
fastcgi_hide_headerãã£ã¬ã¯ãã£ãã¯éåžžã«éèŠã§ãã ããããªããšãã»ãã¥ãªãã£äžã®é倧ãªãªã¹ã¯ãçºçããŸãããŠãŒã¶ãŒã¯ãã£ãã·ã¥å ã®ã»ãã·ã§ã³CookieãéããŠä»ã®ãŠãŒã¶ãŒã®ã»ãã·ã§ã³ãååŸã§ããŸãã ïŒç¢ºãã«ãnginxã®ææ°ããŒãžã§ã³ã§ã¯ããã®èŠå ãèªåçã«èæ ®ããããã«äœããè¡ãããŸãããïŒãããã©ã®ããã«èµ·ãããç解ããŠããŸããïŒ Vasya Pupkinã¯ãµã€ãã«ã¢ã¯ã»ã¹ããã»ãã·ã§ã³ãšã»ãã·ã§ã³CookieãåãåããŸããã ãã®æç¹ã§ãã£ãã·ã¥ã空ã«ãããšãVasina Cookieããã£ãã·ã¥ã«æžã蟌ãŸããŸãã ãã®åŸãå¥ã®ãŠãŒã¶ãŒãæ¥ãŠããã£ãã·ã¥ããå¿çãåãåãããã®äžã«Vasyaã®Cookieãå ¥ããŸããã ããã¯åœŒã®ã»ãã·ã§ã³ãæå³ããŸãã
ãã¡ããã次ã®ããã«èšãããšãã§ããŸããã¡ã€ã³ããŒãžã§session_startïŒïŒãåŒã³åºããªãããã«ããã°ãCookieã«åé¡ã¯ãããŸããã çè«çã«ã¯ããã¯çå®ã§ãããå®éã«ã¯ãã®æ¹æ³ã¯éåžžã«äžå®å®ã§ãã å€ãã®å Žåãã»ãã·ã§ã³ã¯ã延æããããŠéå§ãããã»ãã¥ãªãã£ããŒã«ãçºçãããããã³ãŒãã®ã©ã®éšåã§ãã»ãã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãå¿ èŠãšããé¢æ°ãã誀ã£ãŠãåŒã³åºãã ãã§ååã§ãã ãŸããã»ãã¥ãªãã£ã¯ãç¹å®ã®ææ³ã®é倱ãåå ã§ããŒã«ãçºçããå¯èœæ§ãããå Žåããã®ææ³ã¯å®çŸ©äžãæŒããããããšèŠãªãããŸãã ããã«ãã»ãã·ã§ã³Cookieãé€ãä»ã®CookieããããŸãã ãŸãããã£ãã·ã¥ã«æžã蟌ãå¿ èŠããããŸããã
fastcgi_ignore_headersïŒã¿ã€ããã¹äžã«ãµã€ããè² è·ããã暪ã«ããããªã
fastcgi_ignore_headers "Cache-Control" "Expires";
nginxãµãŒããŒã¯ãPHPãçæããCache-ControlãExpiresãããã³PragmaããããŒã«æ³šæãæããŸãã ããŒãžããã£ãã·ã¥ããå¿ èŠããªãïŒãŸãã¯æ¢ã«å€ããªã£ãŠããïŒãšèšãããå Žåãnginxã¯ãã£ãã·ã¥ãã¡ã€ã«ã«æžã蟌ã¿ãŸããã ãã®åäœã¯ãè«ççã«æããŸãããå®éã«ã¯å€ãã®å°é£ãåŒãèµ·ãããŸãã ãããã£ãŠããããã¯ããŸããfastcgi_ignore_headersã®ãããã§ãèŠåºãã«é¢ä¿ãªããããŒãžã®ã³ã³ãã³ãã¯ãã£ãã·ã¥ãã¡ã€ã«ã«ä¿åãããŸãã
ãããã®å°é£ã¯äœã§ããïŒ ãããã¯åã³ã»ãã·ã§ã³ãšsession_startïŒïŒé¢æ°ã«é¢é£ä»ããããŸããããã¯ãPHPã§ããã©ã«ãã§ããããŒãCache-ControlïŒno-cacheããšãPragmaïŒno-cacheããèšå®ããŸãã ãã®åé¡ã«ã¯3ã€ã®è§£æ±ºçããããŸãã
- ãã£ãã·ã³ã°ãæ³å®ãããŠããããŒãžã§session_startïŒïŒã䜿çšããªãã§ãã ããã æ¢ã«äžã§æ€èšãããã®æ¹æ³ã®æ¬ ç¹ã®1ã€ã¯ãäžæ³šæãªåãã1åããã°ååã§ããããã£ãã·ã¥ãããã¡ã€ã³ããŒãžãžã®1ç§ãããæ°åã®ãªã¯ãšã¹ããåãåããµã€ããããã£ãã·ã¥ããªãã«ãªããšå³åº§ã«ã暪ããããããšã§ãã 2çªç®ã®ãã€ãã¹-2ã€ã®å Žæã§ãã£ãã·ã¥ããžãã¯ã管çããå¿ èŠããããŸãïŒnginxæ§æãšPHPã³ãŒãã ã€ãŸã ãã®ããžãã¯ã¯ãã·ã¹ãã ã®ãŸã£ããç°ãªãéšåã«ãåºããããŸãã
- ini_setïŒ 'session.cache_limiter'ã ''ïŒãèšå®ããŸãã ããã«ãããã»ãã·ã§ã³ã§ã®äœæ¥æã«ãã£ãã·ã¥ãå¶éããããããŒã®åºåãPHPã§åŒ·å¶çã«é²æ¢ã§ããŸãã ããã§ã®åé¡ã¯åãã§ããããŒãããããã£ãã·ã³ã°ããžãã¯ãçæ³çã«ã¯ããã¹ãŠã®ãã£ãã·ã³ã°ã1ãæãã管çãããããã§ãã
- fastcgi_ignore_headersã䜿çšããŠãã£ãã·ã¥ãã¡ã€ã«ã«æžã蟌ãå Žåããã£ãã·ã¥çŠæ¢ããããŒãç¡èŠããŸãã ããã¯ãWin-Winã®ãœãªã¥ãŒã·ã§ã³ã§ãããšæããããããããããå§ãããŸãã
ããŒã¿ãªãŒãã£ãã·ã³ã°
éçãªããŒã ããŒãžã¯ããã»ã©èå³æ·±ããã®ã§ã¯ãããŸããã ãµã€ãã«å€ãã®è³æããããã¡ã€ã³ããããã®äžçš®ã®ãã·ã§ãŒã±ãŒã¹ããšããŠæ©èœããå Žåã¯ã©ãããã°ããã§ããïŒ ãã®ãããªããŠã£ã³ããŠãã§ã¯ããã©ã³ãã ãªãçŽ æã衚瀺ããŠãããŸããŸãªãŠãŒã¶ãŒãããŸããŸãªãã®ãèŠãããããã«ãããšäŸ¿å©ã§ãïŒ1人ã®ãŠãŒã¶ãŒã§ãããã©ãŠã¶ãŒã§ããŒãžããªããŒãããããšã§æ°ããã³ã³ãã³ããåãåããŸãïŒã
ãœãªã¥ãŒã·ã§ã³ã¯ãããŒããŒã·ã§ã³ã䜿çšãããã£ãã·ã¥ã§ãã
- ã¹ã¯ãªããã匷å¶çã«ã©ã³ãã ã«ã¡ã€ã³ããŒãžã«èŠçŽ ãè¿ããããŒã¿ããŒã¹ã«å¿ èŠãªã¯ãšãªãïŒãã£ããã§ã¯ãããŸããïŒå®è¡ããŸãã
- 次ã«ã1ã€ã§ã¯ãªããããšãã°10ããŒãžã®ããªãšãŒã·ã§ã³ããã£ãã·ã¥ã«ä¿åããŸãã
- ãŠãŒã¶ãŒããµã€ãã«ã¢ã¯ã»ã¹ãããšããããã®ãªãã·ã§ã³ã®1ã€ã衚瀺ãããŸãã ãã®å Žåããã£ãã·ã¥ã空ã®å Žåã¯ã¹ã¯ãªãããèµ·åããã空ã§ãªãå Žåã¯ãã£ãã·ã¥ããçµæãè¿ãããŸãã
- å¥ã®ãŠãŒã¶ãŒã1æ¥ã§ãµã€ãã®ãã¹ãŠã®è³æããèŠããããšãã§ããããã«ããã£ãã·ã¥ãšãŒãžã³ã°ã¿ã€ã ãå°ããèšå®ããŸãïŒããšãã°ã1åïŒã
å転ãã£ãã·ã¥ãå®è£ ããnginxã®æ§æèŠçŽ ã¯æ¬¡ã®ãšããã§ãã
fastcgi_cache_path / var / cache / nginx levels = keys_zone = wholepageïŒ50m; perl_set $ rand 'sub {return int rand 10}'; ... ãµãŒããŒ{ ... å Žæ/ { ... fastcgi_pass 127.0.0.1:9000; ... ïŒãã£ãã·ã¥ããªã³ã«ããŠããã£ãã·ã¥ããŒãæ éã«éžæããŸãã fastcgi_cache wholepage; fastcgi_cache_valid 200 301 302 304 1m; fastcgi_cache_key "$ rand | $ request_method | $ http_if_modified_since | $ http_if_none_match | $ host | $ request_uri"; ïŒç°ãªããŠãŒã¶ãŒãåãã»ãã·ã§ã³Cookieãåãåããªãããšãä¿èšŒããŸãã fastcgi_hide_header "Set-Cookie"; ïŒãšã«ãããnginxã«ããŒãžããã£ãã·ã¥ããã ïŒPHPã§å ¬éãããããããŒããã£ãã·ã¥ããŸãã fastcgi_ignore_headers "Cache-Control" "Expires"; ïŒãã©ãŠã¶ã«æ¯åããŒãžããªããŒããããŸãïŒããŒããŒã·ã§ã³ã®ããïŒã fastcgi_hide_header "Cache-Control"; add_header Cache-Control "no-storeãno-cacheãmust-revalidateãpost-check = 0ãpre-check = 0"; fastcgi_hide_header "ãã©ã°ã"; add_headerãã©ã°ãããã£ãã·ã¥ãªãã; ïŒåžžã«ææ°ã®Last-Modifiedãçºè¡ããŸãã æéåã-1; ïŒæ³šæ!!! ãã®æéåãã®è¡ãå¿ èŠã§ãïŒ add_header Last-Modified $ sent_http_Expires; } }
åã®äŸãšæ¯èŒããŠãå Žæã«ããã«6ã€ã®ãã£ã¬ã¯ãã£ããè¿œå ããå¿ èŠããããŸããã ãããã¯ãã¹ãŠéåžžã«éèŠã§ãïŒ ããããèªåããå ã«é²ãŸãªãã§ããã¹ãŠãé çªã«æ€èšããŸãã
perl_setïŒã©ã³ããã€ã¶ãŒã®äŸåé¢ä¿
perl_set $ rand 'sub {return int rand 10}';
perl_setãã£ã¬ã¯ãã£ãã¯åçŽã§ããå€æ°ãäœæããŸããããã䜿çšããŠãnginxã¯ããã«çµã¿èŸŒãŸããPerlã€ã³ã¿ãŒããªã¿ãŒã®é¢æ°ãåŒã³åºããŸããnginxã®äœæè ã«ãããšãããã¯éåžžã«è¿ éãªæäœã§ããããããäžèŽãä¿åãããŸãããå€æ°ã¯ãåHTTPèŠæ±ã§0ãã9ãŸã§ã®ã©ã³ãã ãªå€ãåããŸãã
fastcgi_cache_keyïŒã©ã³ããã€ã¶ãŒã®äŸåé¢ä¿
fastcgi_cache_key "$ rand | $ request_method | ...";
ããã§ãã©ã³ããã€ã¶ãŒå€æ°ããã£ãã·ã¥ããŒã«æ··åããŠããŸãããã®çµæãåãURLã«å¯ŸããŠ10åã®ç°ãªããã£ãã·ã¥ãå¿ èŠã«ãªããŸããããã£ãã·ã¥ãã¹äžã«åŒã³åºãããã¹ã¯ãªããã¯ã¡ã€ã³ããŒãžã®èŠçŽ ãã©ã³ãã ãªé åºã§æäŸãããããã¡ã€ã³ããŒãžã¯10çš®é¡ãããããããã1åéãåç¶ãããŸãïŒfastcgi_cache_validãåç §ïŒã
add_headerïŒãã©ãŠã¶ã®ãã£ãã·ã¥ã匷å¶çã«ãªãã«ããŸã
fastcgi_hide_header "Cache-Control"; add_header Cache-Control "no-storeãno-cacheãmust-revalidateãpost-check = 0ãpre-check = 0"; fastcgi_hide_header "ãã©ã°ã"; add_headerãã©ã°ãããã£ãã·ã¥ãªãã;
äžèšã§ã¯ãnginxã¯PHPã¹ã¯ãªããã«ãã£ãŠåºåããããã£ãã·ã¥ããããŒã®åœ±é¿ãåãããããšè¿°ã¹ãŸããã PHPã¹ã¯ãªãããããããŒãPragmaïŒno-cacheããŸãã¯ãCache-ControlïŒno-storeããè¿ããå ŽåïŒããã«ãããšãã°ãCache-ControlïŒno-saveãno-issueãme-here-not-ç§ã¯ãããèšããªãã£ããããã¯ãã®åžœåã§ãïŒïŒãnginxã¯çµæããã£ãã·ã¥ãã¡ã€ã«ã«ä¿åããŸãããç¹ã«ãã®åäœãæå¶ããããã«ãfastcgi_ignore_headersã䜿çšããŸãïŒäžèšãåç §ïŒã
PragmaïŒno-cacheãšCache-ControlïŒno-cacheã®éãã¯äœã§ããïŒãã©ã°ããHTTP / 1.0ã®ã¬ã¬ã·ãŒã§ãããå€ããã©ãŠã¶ãŒãšã®äºææ§ã®ããã«çŸåšãµããŒããããŠããããã§ãã HTTP / 1.1ã¯Cache-Controlã䜿çšããŸãã
ãã ãããã©ãŠã¶ã«ã¯ãŸã ãã£ãã·ã¥ããããŸãããŸããå Žåã«ãã£ãŠã¯ããã©ãŠã¶ãããŒãžã衚瀺ããããã«ãµãŒããŒã«ãªã¯ãšã¹ããè¡ãããšããªãããšããããŸãã代ããã«ã圌ã¯èªåã®ãã£ãã·ã¥ãããããååŸããŸãããªããªãããŒããŒã·ã§ã³ãããããããã®åäœã¯äžäŸ¿ã§ãããŠãŒã¶ãŒãããŒãžã«ã¢ã¯ã»ã¹ãããã³ã«ãæ°ããããŒã¿ã衚瀺ããå¿ èŠãããããã§ãã ïŒå®éããŸã 1ã€ã®ãªãã·ã§ã³ããã£ãã·ã¥ãããå Žåã¯ãCache-ControlããããŒãè©Šãããšãã§ããŸããïŒ
add_headerãã£ã¬ã¯ãã£ãã¯ããã£ãã·ã¥çŠæ¢ããããŒããã©ãŠã¶ãŒã«æž¡ãã ãã§ããããŠããã®ããããŒã誀ã£ãŠå¢å ããã®ãé²ãããã«ãæåã«HTTPã¬ã¹ãã³ã¹ããPHPã¹ã¯ãªãããæžã蟌ãã ãã®ïŒããã³nginxãã£ãã·ã¥ã«æžã蟌ãŸãããã®ïŒãåé€ããŸãïŒfastcgi_hide_headerãã£ã¬ã¯ãã£ããçµå±ãnginx configãäœæãããšããPHPãããã«åºåããããšã決å®ãããã©ããã¯ããããŸããïŒãããŠãsession_startïŒïŒã䜿çšãããå Žåãããã¯ééããªã決å®ããŸãïŒãçªç¶ã圌ã¯ç¬èªã®Cache-ControlããããŒãèšå®ããŸããïŒæ¬¡ã«ããã®ãã¡ã®2ã€ããããŸããPHP-shnyãšãadd_headerã«ãã£ãŠè¿œå ãããŸãã
æéåãããã³æçµå€æŽïŒä¿èšŒããŒãžã®åèªã¿èŸŒã¿
æéåã-1; ïŒæ³šæ!!! ãã®æéåãã®è¡ãå¿ èŠã§ãïŒ add_headeræçµå€æŽ$ sent_http_Expires;
å¥ã®ããªãã¯ïŒLast-ModifiedãçŸåšã®æå»ã«èšå®ããå¿ èŠããããŸããæ®å¿µãªãããnginxã«ã¯çŸåšã®æå»ãæ ŒçŽããå€æ°ã¯ãããŸããããexpires -1ãã£ã¬ã¯ãã£ããæå®ãããšéæ³ã®ããã«è¡šç€ºãããŸãã
ããã¯çŸåšææžåãããŠããŸãããïŒ2009幎10æïŒãnginxã¯ãã¯ã©ã€ã¢ã³ãã«éä¿¡ãããXXXå¿çããããŒããšã«$ sent_http_XXXã®åœ¢åŒã®å€æ°ãäœæããŸãããã®ãã¡ã®1ã€ã䜿çšããŸãã
çŸåšã®æéã«ãã®èŠåºããèšå®ããããšããªãããã»ã©éèŠãªã®ã§ããïŒãã¹ãŠãéåžžã«ç°¡åã§ãã
- PHPãããããŒãLast-ModifiedïŒsome_dateããçºè¡ãããšããŸãããã
- ãã®ããããŒã¯nginxãã£ãã·ã¥ãã¡ã€ã«ã«æžã蟌ãŸãïŒç¢ºèªã§ããŸãïŒãã®äŸã§ã¯ããã¡ã€ã«ã¯/ var / cache / nginxã«æ ŒçŽãããŸãïŒãã¯ã©ã€ã¢ã³ãã«ãã©ãŠã¶ãŒã«éä¿¡ãããŸãã
- ãã©ãŠã¶ã¯ããŒãžãšãã®å€æŽæ¥ãèšæ¶ããŸã...
- ⊠HTTP- - «If-Modified-Since: _».
- nginx? , Last-Modified If-Modified-Since. ( ), nginx «304 Not Modified» . : , .
Last-Modifiedãæåã§èšå®ããçç±ããã1ã€ãããŸããå®éãsession_startïŒïŒPHPé¢æ°ã¯Last-ModifiedããããŒã匷å¶çã«çºè¡ããŸããããã®äžã«æåã«å¶åŸ¡ãåãåã£ãPHPãã¡ã€ã«ãžã®å€æŽã®æå»ã瀺ããŸãããããã£ãŠããµã€ãäžã®ãã¹ãŠã®ãªã¯ãšã¹ããåãã¹ã¯ãªããïŒããã³ãã³ã³ãããŒã©ãŒïŒã«éä¿¡ãããå ŽåãLast-Modifiedã¯ãã®ã¹ã¯ãªããã®å€æŽã«ããã£ãæéãšã»ãŒåžžã«çãããªããŸãããããã¯å®å šã«ééã£ãŠããŸãã
ãã£ãã·ã¥ããŒãžã®åçãªããŠã£ã³ããŠã
ãããŠæåŸã«ããã£ãã·ã¥ã®èŠ³ç¹ããæçšãªãã¯ããã¯ã®1ã€ã玹ä»ããŸãããµã€ãã®ã¡ã€ã³ïŒãŸãã¯ä»ã®ïŒããŒãžããã£ãã·ã¥ãããããåçã§ãªããã°ãªããªã1ã€ã®å°ããªãããã¯ãå¹²æžããå Žåã¯ãSSIãæäœããããã«ã¢ãžã¥ãŒã«ã䜿çšããŸãã
ããŒãžã®åçãªéšåã«ã次ã®HTMLã³ã¡ã³ããæ¿å ¥ããŸãã
<ïŒ-ïŒinclude virtual = "/ get_user_info /"->
nginxãã£ãã·ã¥ã«é¢ããŠã¯ããã®ã³ã¡ã³ãã¯ãã¬ãŒã³ããã¹ãã§ããã³ã¡ã³ããšããŠãã£ãã·ã¥ãã¡ã€ã«ã«ä¿åãããŸãããã ããåŸã§ãã£ãã·ã¥ãèªã¿åããšãã«ãSSI nginxã¢ãžã¥ãŒã«ãæ©èœããåçURLãåç §ããŸãããã¡ãããã¢ãã¬ã¹/ get_user_info /ã«ã¯ããã®ãããã¯ã®å 容ãè¿ãPHPãã³ãã©ãŒãå¿ èŠã§ãããã®æ¹æ³ã«ã€ããŠã¯ãHabrã®ãã®èšäºã§è©³ãã説æããŠããŸãã
ãã¡ããããã®ããŒãžãŸãã¯ãµãŒããŒå šäœã§SSIãæå¹ã«ããããšãå¿ããªãã§ãã ããã
ssi on;
SSI includeãã£ã¬ã¯ãã£ãã«ã¯ãéåžžã«éèŠãªå¥ã®ããããã£ããããŸãããã®ãããªãã£ã¬ã¯ãã£ããããŒãžäžã§èŠã€ãããšããããã®ãã¹ãŠã䞊è¡ã¢ãŒãã§åæã«åŠçããå§ããŸãããããã£ãŠãããŒãžã«4ã€ã®ãããã¯ããããããããã200ããªç§ãããŒãããå ŽåãåèšããŒãžã¯800ã§ã¯ãªã200ããªç§ã§ãŠãŒã¶ãŒã«åä¿¡ãããŸãã
ãã®èšäºã®ãœãŒã¹ã³ãŒãã¯ããã§èªãããšãã§ããŸãïŒhttp : //dklab.ru/chicken/nablas /56.html