CDN ãšãã£ãã·ã¥ã®éã
ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ (CDN) ã¯ããŠãŒã¶ãŒã®å°ççãªå Žæã«åºã¥ã㊠Web ã³ã³ãã³ããããŒãžãé ä¿¡ãã忣ããããµãŒããŒã§æ§æãããã·ã¹ãã ãæããããã©ãŒãã³ã¹ã®åäžãšã¬ã€ãã³ã·ã®åæžã«è²¢ç®ããŸããCDN ã¯ãã£ãã·ã¥åŠçãå®è¡ããŸãããã£ãã·ã¥ã¯ CDN ã®äžæ žæ©èœã§ããHTML ããŒãžã JavaScript ãã¡ã€ã«ãCSS ãã¡ã€ã«ãç»åãåç»ãªã©ãWebãµã€ãã®éèŠãªãã¡ã€ã«ããšããžãµãŒããŒã«ãã£ãã·ã¥ããŠä¿åããèªã¿èŸŒã¿æéãççž®ããŸãã
CDNãã£ãã·ã¥ãšã¯äœã§ããïŒ
CDN (ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯) ã®æèã§ã¯ãCDN ã§ãã£ãã·ã¥ããããšã§ããŠãŒã¶ãŒã«ããè¿ãå Žæããã³ã³ãã³ããé ä¿¡ããŠã¬ã€ãã³ã·ãççž®ããå€§å¹ ã«èªã¿èŸŒã¿æéãæ¹åããŠãµã€ãããã©ãŒãã³ã¹ãåäžã§ããŸããCDN ãã£ãã·ã¥ã¯ãäžçäžã«åæ£ããããšããžãµãŒããŒã«ã³ã³ãã³ãã®è€è£œãä¿åããä»çµã¿ãæå³ããŸãããŠãŒã¶ãŒãã³ã³ãã³ãããªã¯ãšã¹ããããã³ã«ãCDN ã¯ãªãªãžã³ãµãŒããŒãå¿çããã®ãåŸ ã€ã®ã§ã¯ãªããæãè¿ãå Žæã«ãããšããžãµãŒããŒããã³ã³ãã³ããé ä¿¡ããŸããããã«ããããªã¯ãšã¹ããè€æ°ã®ãµãŒããŒã«åæ£ãããããããªãªãžã³ãµãŒããŒã®ã¯ãŒã¯ããŒããæžããšåæã«ãããå€ãã®ãã©ãã£ãã¯ãåŠçã§ããããã«ãªããŸãã
CDN ã¯æ¬è³ªçã«ãã£ãã·ã¥ã§ããããããã©ãŠã¶ãã£ãã·ã¥ã䜿çšããªãããšã§è€éåãé¿ããããšèããŠããã客æ§ãããã£ããããããããŸãããããããã©ã¡ãã®ãã£ãã·ã¥ã«ããããããç¬èªã®ã¡ãªããããããŸãããã®ããã°èšäºã§ã¯ãåãã£ãã·ã¥ã®ã¡ãªãããã玹ä»ãããããã®ãã£ãã·ã¥ãçµã¿åãããŠWebãµã€ãã®ããã©ãŒãã³ã¹ãæé©åããåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããæ¹æ³ãã説æããŸãã
ãã£ãã·ã¥ãã¹ãã£ã³ã°ãšã¯
ãã£ãã·ã¥ãã¹ãã£ã³ã°ãšã¯ãæ°ãããã¡ã€ã«ãã¢ããããŒãããŠãã£ãã·ã¥æžã¿ã®æ¢åãã¡ã€ã«ãšçœ®ãæããããã»ã¹ãæããŸãããã£ãã·ã¥ãã¹ãã£ã³ã°ã«ãã£ãŠã眮ãæããããå€ããã¡ã€ã«ããã©ãŠã¶ããã£ãã·ã¥ããååŸããã®ãåé¿ã§ããŸãã
CDN ãã£ãã·ã¥ãã©ãŠãžã³ã°ã䜿çšããçç±
CDN ã䜿çšãããšãéåžžã«è¿ éã«ã¢ã»ãããé ä¿¡ã§ããŸãããå»å°ãªã©æºåž¯é»è©±ã®é»æ³¢ãå±ãã«ããå Žæã«ãããŠãŒã¶ãŒã«ãšã£ãŠã¯ããŸã广ããããŸãããå®ã®ãšãããCedexis ã®ã¬ããŒãã«ãããšãç±³åœã§ã¯ãã¹ãŠã® CDN ãžã®åŸåŸ©æé (RTT) ã®95ããŒã»ã³ã¿ã€ã«ã200ããªç§ã倧ããäžåã£ãŠããŸããã€ãŸããå°ãªããšããŠãŒã¶ãŒã®5%ããWebãµã€ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®é å»¶ãçµéšããŠãããšããããšã§ããåèãŸã§ã« RTT ã®50ããŒã»ã³ã¿ã€ã«ãŸãã¯äžå€®å€ã¯ãçŽ45ããªç§ã§ãã
ã§ã¯ãªãããã©ãŠã¶ãã£ãã·ã¥ã®ã¿ã«é Œããããããã CDN ã䜿çšããå¿ èŠãããã®ã§ããããã
ããåªããã³ã³ãããŒã«ãã»ãšãã©ã® CDN ã§ããã£ãã·ã¥ããã¢ã»ãããããŒãžã§ããŸããããã¯ã¢ã»ããã«å€æŽãå ããéã«éåžžã«äŸ¿å©ãªæ©èœã§ããããã©ãŠã¶ãã£ãã·ã¥ã«ã¯ãã®ãªãã·ã§ã³ã¯ãããŸããã
éèŠãªç¬¬äžå°è±¡ãã¢ããããã©ãŠã¶ãã£ãã·ã¥ã¯ããŠãŒã¶ãŒãåããŠãµã€ãã蚪åããéã«ã¯ã³ãŒã«ããã£ãã·ã¥ (å©çšã§ãããªããžã§ã¯ãããªãç¶æ ) ã§ããããããŸã£ãã圹ã«ç«ã¡ãŸãããCDN ã§ã³ãŒã«ããã©ãŠã¶ãã£ãã·ã¥ã«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå¯èœãªéãé«éåãããŠã©ãŒã ãã©ãŠã¶ãã£ãã·ã¥ã§é£ç¶ããããŒãžã®é ä¿¡ãå éã§ããŸãã
CDN ã®å°ççãªã¡ãªããããŠãŒã¶ãŒã95ããŒã»ã³ã¿ã€ã«ã«å«ãŸããå Žåã§ãã250ããªç§ã® RTT ã¯350ããªç§ã® RTT ãããŸã ãŸãã§ããåã¢ã»ããããªãŒãã³æ¥ç¶ã§ååŸããã®ã«1åŸåŸ©ã¯ããããã§ããããã®æ¥ç¶ãéå§ããã«ã¯è¿œå ã®åŸåŸ©ãå¿ èŠãªããšãèãããšåœç¶ã§ããããããã©ã³ã¹ããŒãã¬ã€ã€ãŒã»ãã¥ãªã㣠(TLSã以åã®å称㯠SSL) ã§ã¯æ¥ç¶ããšã«å°ãªããšãããã«1åããšãã«ã¯2åã®åŸåŸ©ã远å ãããŸãããããã远å ã®åŸåŸ©ã«ããããã£ãšããéã« RTT ãå ç®ãããŸãã
ãã¹ãŠã®ãŠãŒã¶ãŒéã§ãã£ãã·ã¥ãå ±æã§ãã CDN ã®åªããå¹çæ§ãCDN ãå©çšããããšã§ããªãªãžã³ãµãŒããŒã®è² è·ãäœãæããããšãå¯èœã«ãªãããã©ãããã©ãŒã ã«ç¬èªã®ãã£ãã·ã¥ã¬ã€ã€ãŒãèšçœ®ããå¿ èŠããªããªããŸãã
CDN ãšãã©ãŠã¶ãã£ãã·ã¥ã®äž¡æ¹ã䜿çšããæ¹æ³
CDN ã®éèŠæ§ãšãã©ãŠã¶ãã£ãã·ã¥ã®äŸ¡å€ãçè§£ãããšããã§ã次ã¯ããã®2ã€ãçµã¿åãããææ³ã2ã€ã玹ä»ããŸãã
ãã©ãŠã¶ãã£ãã·ã¥ã§ã¯æå¹æé (TTL) ãçãèšå®ããCDN åŽã§ã¯é·ã TTL ãšããŒãžæ©èœäœ¿çšããã
CDN ãšãã©ãŠã¶ãã£ãã·ã¥ã®äž¡æ¹ã§ TTL ãé·ãèšå®ããããŒãžã§ã³ããŒã¹ã®ãã£ãã·ã¥ãã¹ã¿ãŒã䜿çšããã
以äžã«ããããã®ææ³ã«ã€ããŠè©³ãã説æãã2ã€ã®ææ³ãçµã¿åãããŠäœ¿çšããæ¹æ³ã«ã€ããŠãã玹ä»ããŸãã
çãTTLãšé·ãTTL
ãã©ãŠã¶ãã£ãã·ã¥ã§ã¯ ãTTL ãã¢ã¯ã»ã¹æéå šäœã®ã¿ãã«ããŒãããã以äžã¯ãã£ãã·ã¥ãæç¶ãããªãããšãçæ³çã§ããããããã°ããŠãŒã¶ãŒã®èšªåäžã¯ããŒãžãè¿ éã«èªã¿èŸŒãŸããåããŠãŒã¶ãŒãåŸã§åããµã€ãã«å床ã¢ã¯ã»ã¹ããŠãéå»ã®ã¢ã»ããã衚瀺ãããããšã¯ãããŸãããåæããŒã«ã§ãµã€ãã®æ»åšæéã確èªã§ããŸãããéåžž5 - 10åãšãã£ããšããã§ãã
Fastly åŽã® TTL ã¯1ãæãŸãã¯1幎çšåºŠã«ãããããã€ãã€ãã©ã€ã³ã®äžéšãšããŠããŒãžãã»ããã¢ããããŠãã§ããéãæ©ãæ°ããããŒãžã§ã³ãé ä¿¡ã§ããããã«ããããšããå§ãããŸããããŒãžã«ã€ããŠè©³ããã¯ãhttps://docs.fastly.com/guides/purging/ ãã芧ãã ããã
泚 : æŽæ°ããã¢ã»ããã®æ°ããããŒãžã§ã³ã確å®ã«ãªãªãžã³ããé ä¿¡ãããããšã確èªã§ãããŸã§ãããŒãžã³ãã³ããéä¿¡ããªãã§ãã ãããFastly ã«ããŒãžãéä¿¡ããããªãªãžã³ãµãŒããŒãžã®åæãå®äºããåã« Fastly ãå³åº§ã«ãã¡ã€ã«ãååŸããããšã«ãã£ãŠãæ··ä¹±ãçããã±ãŒã¹ãéå»ã«ç¢ºèªãããŠããŸãã
ãã©ãŠã¶ãã£ãã·ã¥ã® TTL ãèšå®ããã«ã¯ããªãªãžã³ã®ã¬ã¹ãã³ã¹ã« Cache-Control ããããŒã䜿çšããŸããããã«ãSurrogate-Control ããããŒãŸã㯠Fastly èšå®ã§ãªãŒããŒã©ã€ãã䜿çšããŠãTTL ãèšå®ããŸãã
以äžã¯ Surrogate-Control ããããŒã䜿çšããäŸã§ãã
Cache-Control: max-age=600
Surrogate-Control: max-age=31536000äžèšã®äŸã§ã¯ãCache-Control ããããŒã¯ãã©ãŠã¶ã«10åãã£ãã·ã¥ããããæç€ºããFastly ã«ã¯1幎éãã£ãã·ã¥ããããæç€ºããŠããŸããSurrogate-Control ããããŒã¯ãã¬ã¹ãã³ã¹ãã¯ã©ã€ã¢ã³ãã«éä¿¡ãããåã«åé€ãããããããã®å®è£
ã®è©³çްã¯ãŠãŒã¶ãŒããã¯èŠããŸãããFastly ã§ TTL ãã³ã³ãããŒã«ããéã«äœ¿çšã§ããããããŒã«ã€ããŠè©³ããã¯ãFastly ã®ããã¥ã¡ã³ããã芧ãã ããã
ããŒãžã§ã³ããŒã¹ã®ãã£ãã·ã¥ãã¹ã¿ãŒ
ãã®ååã«åããŠããã£ãã·ã¥ãã¹ã¿ãŒã¯è³¢ã䜿çšãããšãã£ãã·ã¥ãæ¹åã§ããŸããç°¡åã«èšããšããã£ãã·ã¥ãã¹ã¿ãŒã¯ URL ã«è¿œå ãããæ°ããã¯ãšãªæååãã©ã¡ãŒã¿ãŒã§ããWeb ãµãŒããŒãšå€ãã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯é¢ä¿ã®ãªãã¯ãšãªæååãã©ã¡ãŒã¿ãŒãç¡èŠããŸããããã£ãã·ã¥ã¯ã¯ãšãªæååã®ããããå·®ç°ãçµæã«åœ±é¿ãäžãããšä»®å®ããŸããããã¯ãã©ãŠã¶ãã£ãã·ã¥ã®å Žåãåãã§ãã以äžã®3ã€ã®ãªããžã§ã¯ãã«å¯ŸããŠãµãŒããŒããŸã£ããåãã¬ã¹ãã³ã¹ãè¿ãããšããŠãããã©ãŠã¶ã¯ããããäžæã®ãªããžã§ã¯ããšããŠæ±ãå¿ èŠããããŸãã
https://www.example.com/css/main.css, https://www.example.com/css/main.css?cb=fooãhttps://www.example.com/css/main.css?foo=bar
ãã«ãçªå·ã133ã®ã¢ããªãéçšããŠãããšããŸããã¢ããªã¯ https://www.example.com/css/main.css ã«ãªã³ã¯ãã代ããã«ãhttps://www.example.com/css/main.css?v=133 ã«ãªã³ã¯ããŸãããã«ã134ãæ§ç¯ããå Žåã¯ã代ããã« https://www.example.com/css/main.css?v=134 ã«ãªã³ã¯ããŸãããã©ãŠã¶ã¯ãæå¹æéå
ã®ã³ããŒããã£ãã·ã¥ã«ãã£ãŠãããã® main. css ã®æ°ããããŒãžã§ã³ãååŸããå¿
èŠããããŸãã
äžè¬çã«ã¯ããã¡ã€ã«ã³ã³ãã³ãã® (çã) ããã·ã¥ããã«ãçªå·ããŸãã¯ã³ãããããã·ã¥ã®ããããã䜿çšããŸãã
å人çã«ã¯ãã¡ã€ã«ã³ã³ãã³ãã®ããã·ã¥ã䜿çšããããšããå§ãããŸãããã®æ¹æ³ã§ã¯ãã³ã³ãã³ããå€åããå Žåã«ã®ã¿ãã£ãã·ã¥ãã¹ã¿ãŒãå€åããŸããäžæ¹ããã«ãçªå·ãŸãã¯ã³ãããããã·ã¥ã䜿çšãããšãäœããã®å€æŽããããã³ã«å¿ ããã£ãã·ã¥ãã¹ã¿ãŒãå€åããŸãããã ãããµã€ãã®ã¢ã»ããã®ãã¹ãŠã® URL ã«ãã£ãã·ã¥ãã¹ã¿ãŒãå¿ èŠãªããããã«ãçªå·ãŸãã¯ã³ãããããã·ã¥ã䜿çšããæ¹ã䟿å©ãªå ŽåããããŸãã
ãã®ã¢ãããŒãã®ãã¡ãªããã¯ã倿Žã®ãã³ã«ãã¹ãŠã®ã¢ã»ãã URL ãæŽæ°ããå¿ èŠããããšããããšã§ããã¡ãªããã¯ãé·ã TTL ã䜿çšããŠãã©ãŠã¶ã§ã¢ã»ããããã£ãã·ã¥ã§ãããã£ãã·ã¥ã®æå¹æéãéãããšãã©ãŠã¶ãæ°ããã¢ã»ãããååŸã§ãããšããç¹ã§ãã
çµã¿åãããŠã楜ãã¿ãã ãã
Fastly ã® CDN ã䜿çšãããšã150ããªç§ä»¥å ã«å€ãã³ã³ãã³ããããŒãžã§ããããããã¹ãŠã® HTML ããŒãžããã£ãã·ã¥ããããšãæ€èšãã¹ãã§ãããããã ããç»åãã¹ã¿ã€ã«ã·ãŒããJavaScript ãªã©ã®ã¢ã»ããã«ãã£ãã·ã¥ãã¹ã¿ãŒã䜿çšãããããµã€ããåãšã³ãžãã¢ãªã³ã°ãããšããŠããå®éã®ããŒãžã® URL ã«ãã£ãã·ã¥ãã¹ã¿ãŒã䜿çšããã¹ãã§ã¯ãããŸããã Google ãªã©ã®æ€çŽ¢ãšã³ãžã³ã§ã¯ãããŒãžã® URL ã«ã¯ãšãªæååããããšããã«ãã£ã課ãããããã§ãã
ããŒãžããã£ãã·ã¥ããå Žåã¯ãããŒãžã«çã TTL ãšé·ã TTL ãèšå®ãããã¯ããã¯ã䜿ããããŒãžã§äœ¿çšãããã¢ã»ããã«ãã£ãã·ã¥ãã¹ã¿ãŒã䜿çšããããšãæ€èšããŠãã ããã
é«åºŠãªæ : åæ€èšŒ
ãã©ãŠã¶ãã£ãã·ã¥ã䜿çšããããšã®äºæ¬¡çãªã¡ãªããã¯ããªããžã§ã¯ãã®æå¹æéãéããŠããã©ãŠã¶ããªããžã§ã¯ããä¿æãããªã¯ãšã¹ããšäžç·ã«åæ€èšŒãè¡ã远å ã®ããããŒãéä¿¡ããããšã§ãããªã¯ãšã¹ããããŠãããªããžã§ã¯ãã倿ŽãããŠããªãå ŽåãCDN ã¯æ¬æãªãã® 304 Not Modified ã¹ããŒã¿ã¹ãè¿ããæå¹æéãéãããªããžã§ã¯ãã䜿çšã§ããããšããã©ãŠã¶ã«äŒããä»»æã§æ°ãã TTL ãæäŸã§ããŸãã
304ã¬ã¹ãã³ã¹ãåãåããªã¯ãšã¹ãã®å Žåã§ããåŠçãå®äºãããŸã§ã«å¿ ãåŸåŸ©ããå¿ èŠãããããšã¯å€ãããŸããããã¬ã¹ãã³ã¹ã®æ¬æããªãããããŒã¿è»¢ééãå€§å¹ ã«åæžã§ããŸããããã¯ãäœéåç·ã䜿çšããŠãããŠãŒã¶ãŒã«ãšã£ãŠã¡ãªãããããã ãã§ãªããæã ã® CDN æéãåæžã§ããå¯èœæ§ããããŸãã
åæ€èšŒãæå¹ã«ããããã«å¿
èŠãªã®ã¯ããªãªãžã³ããã®ã¬ã¹ãã³ã¹ã« Last-Modified ããããŒãŸã㯠ETag ããããŒãå«ãŸããããã«ããããšã ãã§ãã幞ããã»ãšãã©ã® Web ãµãŒããŒã§ã¯ãã§ã«ããã£ã¹ã¯ããé
ä¿¡ããéçãã¡ã€ã«ãã¹ãŠã« Last-Modified ããããŒããã³ ETag ããããŒãå«ãŸããŠããŸããLast-Modified ããããŒã®å€ã¯ããã¡ã€ã«ã®å€æŽæ¥æã«åºã¥ããŸããETag ããããŒã®å€ã¯ã(Apache ã®) 倿޿¥æãinode çªå·ããµã€ãºã«åºã¥ããŸãã
ãã©ãŠã¶ã®ãã£ãã·ã¥ã«ããæå¹æéãåãããªããžã§ã¯ãã«ãããã2ã€ã®ããããŒã®ããããããããã¯äž¡æ¹ãååšããããšããã©ãŠã¶ãèªèãããšãLast-Modified ã®å€ãæã€ If-Modified-Since ããããŒãšãETag ã®å€ãæã€ If-None-Match ããããŒã远å ãããŸããIf-None-Match ãšETag ã®å€ãåãå Žåãããã³ If-Modified-Since ã®å€ã Last-Modified ã®å€ãšäžèŽããããããããåŸã§ããå Žåããªããžã§ã¯ãã«å€æŽããªããšã¿ãªãããŸãã
éçã¢ã»ããåãã«åäžã® Web ãµãŒããŒã䜿çšããŠããå Žåãå ±éã®ããã©ã«ãèšå®ã«ãã£ãŠããã§ã«åæ€èšŒãå®å šã«æ©èœããŠãããšèããããŸãã
ããããåé·æ§ã確ä¿ããããã«è€æ°ã® Web ãµãŒããŒã䜿çšããŠãããåãµãŒããŒãå
±æã¹ãã¬ãŒãžã§ã¯ãªãããããããŒã«ã«ã¹ãã¬ãŒãžã䜿çšããŠããå Žåãã©ã³ãã ã«åæ€èšŒã®å€±æãçºçããå ŽåããããŸãããªããªããç¹å®ã®ãã¡ã€ã«ãå Web ãµãŒããŒã§åã inode çªå·ãå²ãåœãŠããããšã¯éãããçæããã ETag ããããŒã¯ãµãŒããŒã«ãã£ãŠç°ãªãããã§ãããŸããã»ãšãã©ã®ãããã€ã¹ã¯ãªããã¯ãã¡ã€ã«ãã³ããŒããéã«å€æŽæ¥æãä¿æããªãã®ã§ãLast-Modified ããããŒã®å€ãç°ãªããŸãã
ããã¯2ã€ã®çç±ã§å¥œãŸãããããŸããããŸããFastly ããªãªãžã³ãšéä¿¡ããå Žåã304ã¬ã¹ãã³ã¹ã®ä»£ããã«ãã«ã¬ã¹ãã³ã¹ãéä¿¡ããŠç¡é§ã«åž¯åã䜿çšãããå¯èœæ§ããããŸããæ¬¡ã«ãFastly ã¯ç°ãªããµãŒããŒã§ç°ãªã ETag ãš Last-Modified ã®å€ãä¿æããããšã«ãªãå¯èœæ§ããããŸãããã©ãŠã¶ããªã¯ãšã¹ãã®ãã³ã«åããµãŒããŒãšéä¿¡ãããšããä¿èšŒã¯ãªããããå€ã®äžäžèŽãåå ã§äžèŠãªãã«ã¬ã¹ãã³ã¹ãè¿ãããå¯èœæ§ããããŸãã
ããŒã«ã«ã¹ãã¬ãŒãžã䜿çšãã Web ãµãŒããŒãè€æ°ããå Žåãåæ€èšŒãæå€§éã«æŽ»çšããã«ã¯ ETag ããªãã«ã㊠Last-Modified ã®ã¿ã䜿çšãããã¡ã€ã«ãã³ããŒããéã«ãããã€ã¹ã¯ãªããã§å€æŽæ¥æãèšé²ããããšããå§ãããŸãã
Google Cloud Storage ã Amazon S3 ãªã©ã®ã¯ã©ãŠãã¹ãã¬ãŒãžãããã€ããŒã䜿çšããŠããå ŽåãETag ããããŒã¯ãã§ã«ã³ã³ãã³ãã®ããã·ã¥ã«èªåçã«èšå®ãããŠããã¯ãã§ããåŸã£ãŠãåäžã®ãã¡ã€ã«ãåã¢ããããŒãããŠã ETag ã¯å€åããªããããã¯ã©ãŠãã¹ãã¬ãŒãžã¯ Fastly ã«ãšã£ãŠæé©ãªãªãªãžã³ã®ã²ãšã€ã§ãã
