VarnishãDrupalïŒãŸãã¯ãã®ä»ã®Webã¢ããªã±ãŒã·ã§ã³ïŒã®åã«é 眮ãããšãçä¿¡HTTPãªã¯ãšã¹ãã®åŠçã¹ããŒã ã¯æ¬¡ã®ããã«å€æãããŸãã
Drupal 6ããã³7ã®æ代ãVarnishã䜿çšãããšãéçãªãœãŒã¹ïŒç»åãCSSãJavaScriptãã¡ã€ã«ïŒããã£ãã·ã¥ããã®ãéåžžã«äŸ¿å©ã§ããã ããããHTMLããŒãžã®ãã£ãã·ã¥ã«ã¯åé¡ããããŸãã-éžæçãªãã£ãã·ã¥ç¡å¹åã®ããã®äŸ¿å©ãªã¡ã«ããºã ããããŸããã§ããã æå³çã«å€ããã£ãã·ã¥ãæäŸããããDrupalã«å€æŽãå ããŠã¯ãã¹ã®ãã£ãã·ã¥ãå®å šã«ã¯ãªã¢ããããã«æ®ã£ãã ãã§ãã ã©ã¡ãã®ã¢ãããŒãã«ãæ¬ ç¹ããããŸããã
Drupalã®å€æŽæã«Varnishã®ãã£ãã·ã¥ãç¡å¹ã«ããªãã£ãå Žåãæ¯èŒçå°ããªTTLãèšå®ããŠãVarnishã®ãã£ãã·ã¥ãããã«å€ããªãããã«ããVarnishãDrupalã®æ°ããããŒã¿ã§ãã£ãã·ã¥ãæŽæ°ããŸããã
äžæ¹ãDrupalã§ããããã¿ããããã³ã«ãã¯ãã¹ã®ãã£ãã·ã¥ãã¯ãªã¢ãããšããããã®å¯Ÿçãåé·ã«ãªãããšããããããŸããã äžéšã®ãŠãŒã¶ãŒã¯ãã¢ã¯ã»ã¹ã®å°ãªãããŒãžã§ç¡å®³ãªã³ã¡ã³ããæžãããšãã§ããŸãããããã«ããããã¹ã®ãã£ãã·ã¥å šäœãç¡å¹ã«ãªããŸããïŒå®éã«è¿œå ãããã³ã¡ã³ãã«ããå€æŽãããªãã£ãããŒãžãå«ãïŒã
Drupal 8ãã£ãã·ã¥API
幞ããªããšã«ãã¡ã¿æ å ±ãä»ããæè»ãªãã£ãã·ã³ã°ã·ã¹ãã ãè¿œå ãããDrupal 8ã®æ¹ãã¯ããã«åªããŠããŸãã ç§ã¯å ¬åŒããã¥ã¡ã³ããèªãããšã«èå³ãããããšã匷ãå§ããŸã ã èŠããã«ããã®ã·ã¹ãã ã«ãããDrupalã¯çæãããããŒãžãäŸåãããã®ïŒããŒããã³ã¡ã³ããæ§æãªã©ïŒã远跡ã§ããŸãã åããŒãžã¯ããã£ãã·ã¥ã¿ã°ïŒãã£ãã·ã¥ã¿ã°ïŒã®ã»ããã«é¢é£ä»ããããŠããŸãã ãã®åŸãç¶æ ãå€æŽããããšãDrupalã¯ã©ã®ãã£ãã·ã¥ã¿ã°ãç¡å¹ã«ããå¿ èŠãããããèªèããŸãã ããã«ãããäœãïŒããŒããã³ã¡ã³ããæ§æïŒãå€æŽããããšãã«Drupalããã£ãã·ã¥ããŒãžã®æå°éå¿ èŠãªã»ããã®ã¿ãç¡å¹ã«ããããšãã§ããŸãã ããã¯ãDrupalã®ã³ã¢ãå éšãã£ãã·ã¥ãç¡å¹ã«ããããã«äœ¿çšããã¢ãããŒãã§ãã äžå¯Ÿã®åšçšãªåãã«ãããã¯ãã¹ã®ãã£ãã·ã¥ã§åæ§ã®ãæäœéå¿ èŠãªãé害ãéæã§ããŸãã
Varnishã§ã®Cache APIã®æ¡åŒµ
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãéçãªãœãŒã¹ïŒã°ã©ãã£ãã¯ãCSSãJavaScriptïŒã®Varnishãæ¢ã«æ£åžžã«ã€ã³ã¹ããŒã«ããã³æ§æãããŠããããšãåæãšããŠããŸãã å¿åã®HTMLããŒãžã§ãã£ãã·ã¥ãã«ããŒããã«ã¯ã3ã€ã®æé ãå¿ èŠã§ãã
- ã©ã®ããŒãžãã©ã®ã¿ã°ãã£ãã·ã¥ã«äŸåããããVarnishã«èª¬æããŸãã Drupalã¯ãã§ã«ãã®ç¥èãæã£ãŠããã®ã§ãã¯ãã¹ã«æž¡ãã ãã§ãã
- ãã£ãã·ã¥ã¿ã°ãDrupalã§ç¡å¹ã«ãªã£ãæç¹ã§ããã®ã¿ã°ãã£ãã·ã¥ã«äŸåãããã¹ãã£ãã·ã¥å ã®ãã¹ãŠã®ããŒãžãç¡å¹ã«ããå¿ èŠããããŸãã
- ããããã¹ãŠã®é©æ°ã®ããã«ãã¹ãæºåããŸãã
ãããã¯ãã¹ãŠãDrupalãšã³ã·ã¹ãã ã®ã¢ãžã¥ãŒã«ãšããŠæ¢ã«å®è£ ãããŠããŸãã å¿ èŠãªãã®ïŒ
- ããŒãž -å€éšHTTPãã£ãã·ã¥ãç¡å¹ã«ããããã®äžçš®ã®ãã¬ãŒã ã¯ãŒã¯ïŒã¯ãã¹ãCDNãNginxïŒ
- Varnish Purgerã¯ããã®ãã¬ãŒã ã¯ãŒã¯ãVarnishã§å®è£ ãããã®ã§ãã
ã³ã³ããŒã¶ãŒã䜿çšããŠããå ŽåïŒ
composer require "drupal/purge:^3.0" composer require "drupal/varnish_purge:^1.0"
次ã®ã¢ãžã¥ãŒã«ãå«ããŸãã
- ããŒãžïŒããŒãžïŒ
- ããŒãžãã©ã·ïŒpurge_drushïŒ
- ããŒã¯ã³ã®ããŒãžïŒpurge_tokensïŒ
- UIã®ããŒãžïŒpurge_uiïŒ
- cronããã»ããµãŒïŒpurge_processor_cronïŒãŸãã¯åŸæã©ã³ã¿ã€ã ããã»ããµãŒïŒpurge_processor_lateruntimeïŒã ããã2ã€ã®ã¢ãžã¥ãŒã«ã®éãã«ã€ããŠã¯ãå°ãåŸã§èª¬æããŸãã
- ã³ã¢ã¿ã°ãã¥ãŒã©ãŒïŒpurge_queuer_coretagsïŒ
- ã¯ãã¹ããŒãžã£ãŒïŒvarnish_purgerïŒ
- ã¯ãã¹ããŒãžã£ãŒã¿ã°ïŒvarnish_purge_tagsïŒ
Drupal 8ã®ã»ããã¢ãã
Drupalã«Varnishã®å Žæãšãã£ãã·ã¥ãéšåçã«ç¡å¹ã«ããæ¹æ³ã説æããå¿ èŠããããŸãã äžèšã®ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããåŸãããŒãž
/admin/config/development/performance/purge
ãŸãã Varnish purgerãè¿œå ããVarnishãé 眮ãããŠãããã¹ããžã®æ£ãããã¹ãæå®ããŸãã
[ ã¿ã€ã]ã§ã Tagãæå®ããŸãã ç¡å¹åã«ã¯Drupalã®ãã£ãã·ã¥ã¿ã°ã䜿çšããŸãã Requestã¡ãœãã㧠Banãæå®ããŸã Varnishã®æ§æã®å¯Ÿå¿ããéšåã¯ããŸãã«ãã®ãããªHTTPãªã¯ãšã¹ãã¡ãœãããæ³å®ããŠããŸãã
[ ããã㌠]ã¿ãã§ïŒ
[invalidationïŒexpression]ã®ã³ã³ãã³ããå«ãCache-TagsããããŒãè¿œå ããŸãã ãã®ããŒã¯ã³åãããåŒã¯ãããŒã¯ã³ã¢ãžã¥ãŒã«ã«ãã£ãŠç¡å¹ãªã¿ã°ãã£ãã·ã¥å€ã«çœ®ãæããããŸãã
æ®ãã¯ããªãã®å¥œã¿ãç¹å®ã®ç¶æ³ã«åãããŠèšå®ã§ããŸãïŒãŸãèšå®ããå¿ èŠããããŸãïŒã ããã§ãDrupalã¯ãã¹ãŠã®åçã«Cache-TagsããããŒãå«ããçæãããããŒãžã®åœ¢æã«åå ãããã£ãã·ã¥ã¿ã°ã®ãªã¹ããå«ããŸãã Varnishã¯ãããã®ããããŒããã£ãã·ã¥ã®äžéšãšããŠä¿åãããããã䜿çšããŠãã£ãã·ã¥ãç¡å¹ã«ããŸãã
ãã®æç¹ã§ãçŽæ¥èŠæ±ãããšãïŒã¯ãã¹ããã€ãã¹ãããšãïŒã®Drupalã«å®éã«Cache-TagsããããŒãå«ãŸããŠããããšã確èªããŠãã ããã ç§ã®å Žåãæåã«è¡šç€ºãããããŒãžã¯æ¬¡ã®ããã«ãªããŸãã
ãã¿ãã¬
Cache-Tags: block_view config:block.block.seven_breadcrumbs config:block.block.seven_content config:block.block.seven_help config:block.block.seven_local_actions config:block.block.seven_login config:block.block.seven_messages config:block.block.seven_page_title config:block.block.seven_primary_local_tasks config:block.block.seven_secondary_local_tasks config:block_list config:coffee.configuration config:shortcut.set.default config:system.menu.admin config:user.role.administrator config:user.role.authenticated http_response rendered user:1
ããã©ã«ãã§ã¯ãDrupalã¯
Cache-Control: private, no-cache
å¿çããŸã
Cache-Control: private, no-cache
çæããããã¹ãŠã®HTMLãªãœãŒã¹ã«å¯ŸããŠ
Cache-Control: private, no-cache
ïŒã€ãŸãããã£ãã·ã¥ãç¡å¹ã«ããŸãïŒã ããã¯ãã¯ãã¹ããããããã£ãã·ã¥ããªãããšãæå³ããŸãã Drupalèšå®ã§å€éšãã£ãã·ã¥ãæå¹ã«ããå¿ èŠããããŸãã
/admin/config/development/performance
ããŒãžã«ç§»åãã Page cache maximum ageã«ãŒã以å€ã®å€ãéžæããŸãã
ç¡å®³ãª5åã®ãã£ãã·ã¥ããéå§ããããšããå§ãããŸãããã¹ãŠããããã°ãããæ£åžžã«å®è¡ãããå Žåã«ã®ã¿ãæ°æéãŸãã¯æ°æ¥éã®ãã«ã¹ã±ãŒã«å€ã«åãæ¿ããŸãã
ããäžåºŠç¢ºèªããŠãã ãããå¿åãŠãŒã¶ãŒãDrupalããŒãžããªã¯ãšã¹ããããšãã
Cache-Control: public, max-age=[ ]
ããšããçãã衚瀺ãããŸãã ãããŠãèš±å¯ãŠãŒã¶ãŒã«ä»£ãã£ãŠå°ãããããšãã
Cache-Control: private, no-cache
fly backã ãããã£ãŠãVarnishã¯å¿åã®å¿åHTMLããŒãžã®ã¿ããã£ãã·ã¥ã§ããŸãã
ã¯ãã¹ãæ§æãã
ããã§ã¯ãã¯ãã¹ã®æºåã«ç§»ããŸãããã 以äžãVCLã«è¿œå ããå¿ èŠããããŸãã
æåã«ãDrupalã¯ããªãã®ãã¹ã«HTTPçŠæ¢ãªã¯ãšã¹ããéä¿¡ããŸãã ãŸãããã®ãªã¯ãšã¹ãã®åŠçãžã®ã¢ã¯ã»ã¹ãå¶éããå¿ èŠããããŸããããããªããšã誰ã§ãã¯ãã¹ã®ãã£ãã·ã¥ãã¯ãªã¢ã§ããŸãã ãããè¡ãã«ã¯ãaclã°ã«ãŒããå ¥åããŸãã
# , Ban . acl purge { "127.0.0.1"; }
çŠæ¢ãªã¯ãšã¹ãèªäœã®åŠçãè¿œå ããå¿ èŠããããŸãã vcl_recvã§æåã«èšè¿°ããŸãã
if (req.method == "BAN") { # . if (!client.ip ~ purge) { return (synth(403, "Not allowed.")); } # âCache-Tagsâ . if (req.http.Cache-Tags) { ban("obj.http.Cache-Tags ~ " + req.http.Cache-Tags); } else { return (synth(403, "Cache-Tags header missing.")); } # . return (synth(200, "Ban added.")); }
ãŸããããã©ã«ãã§ã¯ãVarnishã¯ãšã³ãã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ãŒïŒãžã®å¿çã§Drupalããåä¿¡ããCache-Tagsããã³Cache-ControlããããŒãå€æããŸãã
Cache-Tagsã®å Žåãããã¯ããããã¯ãŒã¯ãä»ããŠé転ãããã¿ã§ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®å éšæ§é ã«é¢ããè¿œå ã®æ å ±æºã§ãã Cache-ControlïŒpublicã®å Žåãããã¯ããªãæãŸãããªãåäœã§ãã Drupalã¯Varnishã®ãã£ãã·ã¥ãèš±å¯ããŸãããã蚪åè ã®ãã©ãŠã¶ãŒã§ã®ããŒãžã®ãã£ãã·ã¥ã¯æ£ãããããŸããïŒæŽæ°ãããã³ã³ãã³ãã®åä¿¡ãé ãããã£ãã·ã¥ã®ç¡å¹åã«é¢ããå·§åŠãªã¹ããŒã å šäœãã¹ãã«ã«ã«ãªã£ãŠããŸãããïŒã ãããã£ãŠã vcl_deliverã«æ¬¡ãè¿œå ããå¿ èŠããããŸãã
# . unset resp.http.Cache-Tags; # . if (resp.http.Content-Type ~ "text/html") { set resp.http.Cache-Control = "private,no-cache"; }
ãã®æç¹ã§ã皌åäžã®ãµãŒããŒã§Varnishãã¯ãã¹ããŠåèµ·åã§ããŸãã çŸåšãã¯ãã¹ã¯ãDrupalãéä¿¡ããHTTPçŠæ¢ãªã¯ãšã¹ãã䜿çšããŠããã£ãã·ã¥ãéžæçã«æ¶å»ã§ããŸãã ãŸããHTMLãªãœãŒã¹ïŒDrupalãèš±å¯ãããã®ïŒãå·§ã¿ã«ãã£ãã·ã¥ããŸããããã©ãŠã¶ãŒã¯ãããããã£ãã·ã¥ã§ããŸããã ã¯ã©ã¹ãšããŠã®åå-ãªããŒã¹HTTPãããã·ãã£ãã·ã¥-ãããããæ¥ãŠãã¯ã©ã€ã¢ã³ãã§ã¯ãªãHTTPãããã·ã«ãã£ãã·ã¥ããŸãã
ãã³ããã£ã³ãã£ãŒã©ãããŒãã¯ãããŒ
æ£ããæ§æãå確èªããŠãã ããã ããã«ã€ããŠåŠã¶ããšã¯ãå€æŽãè¡ã£ãçŽåŸãããåå2æã«ã¯ã©ã€ã¢ã³ãããèŠçãæããã§ãããã ç§ã®çŽèŠ³
Cronããã»ããµããã³åŸæã©ã³ã¿ã€ã ããã»ããµã¢ãžã¥ãŒã«
ãããã®2ã€ã®ã¢ãžã¥ãŒã«ã®ãããããå¿ èŠã«ãªããšè¿°ã¹ãŸããã Varnishã®ãã£ãã·ã¥ã®ç¡å¹åã¯ãã¥ãŒåäœã§è¡ãããŸãããªã¯ãšã¹ãã®åŠçäžã«ãDrupalã¯ç¹å®ã®ãã£ãã·ã¥ã¿ã°ããã¥ãŒã«æ¿å ¥ãã察å¿ããHTTPçŠæ¢ãªã¯ãšã¹ããVarnishã«éä¿¡ããŠèª°ãããã®ãã¥ãŒãåŠçããå¿ èŠããããŸãã äž¡æ¹ã®ã¢ãžã¥ãŒã«ã¯ãã¥ãŒåŠçã®åé¡ã解決ããŸãããç°ãªãæ¹æ³ã§åŠçããŸãã
cronããã»ããµã¯ãcron Drupalã®èµ·åæã«ãã¥ãŒãåŠçããŸãã ããã¯ãcronãæŠç¥çã«éèŠã«ãªã£ãŠããããšãæå³ããŸãïŒä»¥åã®ããã«èæ ®ããå¿ èŠããããŸãïŒã ãã®ã¢ãã«ãããVarnishããã£ãã·ã¥ãããHTMLã³ã³ãã³ããå€ãHTMLã³ã³ãã³ããã¬ã³ããªã³ã°ã§ããå Žåã XãŸã§ã®é å»¶ïŒ Xã¯cronã®èµ·åé »åºŠïŒãããããšã«ããªããŸãã å Žåã«ãã£ãŠã¯ããã§åé¡ãããŸããã
代æ¿ã®ïŒãããã£ãŠãããç©æ¥µçãªïŒãã¥ãŒããã»ããµã¯ãé 延ã©ã³ã¿ã€ã ããã»ããµã§ãã åçä¿¡HTTPãªã¯ãšã¹ãã®åŠçã®çµããã«ã¿ã°ãã£ãã·ã¥ãã¥ãŒãåŠçããŸãã ãªã¢ã«ã¿ã€ã ã§ã
Webãµã€ãã«è¡šç€ºããã奜ã¿ãšèŠä»¶ã«å¿ããŠã2ã€ã®ãã³ãã©ãŒã®ãããããéžæããŸãã ã»ãšãã©ã®Drupal 8 Webãµã€ãã¯Cronããã»ããµã䜿çšããŠãããšããå°è±¡ãåããŸããã ãã ããLate Runtime Processorã®åé¡ãšæçœãªãã°ãç»é²ãããŠããŸããã
éä¿¡ãã£ãã«Drupalâã¯ãã¹
Drupalãé 眮ãããŠãããã¹ãããã
curl -X BAN --header 'Cache-Tags: dummy-cache-tag' http://varnish-server.com
Varnishã200 HTTP OKã§å¿çããŠããããšã確èªããŠãã ããã ããã¯ãã¯ãã¹ãæ£ããæ§æãããDrupalãéä¿¡ããç¡å¹åãªã¯ãšã¹ããåŠçããæºåãã§ããããšãæå³ããŸãã
DrupalãŠã©ããããã°ã®ãããã°æ å ±
ããŒãž
/admin/config/development/performance/purge
ã§ãDrupalã®ãŠã©ããããã°ã§å¿ èŠãªãã°ã¬ãã«ãèšå®ã§ããŸãã åé¡ãç¹å®ããå¿ èŠãããå Žåã«éåžžã«äŸ¿å©ã§ãã
ç¡å¹åã®ãã¥ãŒ
/admin/config/development/performance/purge
ããŒãžã«çŸåšã®ã¹ããŒã¿ã¹ããããŸãã ç¹ã«ã Queue sizeã«ãŠã³ã¿ãŒã«æ³šæããŠãã ããã ããã¯ãã¿ã°ãã£ãã·ã¥ç¡å¹åãã¥ãŒã®çŸåšã®é·ãã瀺ããŸããããã¯ãDrupalã§æ¢ã«ç¡å¹ã«ãªã£ãŠããããã¯ãã¹ã§ã¯ãŸã ç¡å¹ã«ãªã£ãŠããªãã¿ã°ãã£ãã·ã¥ã®æ°ã§ãã
cronã䜿çšããŠç¡å¹åã䜿çšããå Žåã¯ãcronã®èµ·ååŸã«ãã®æ°å€ããŒãã«ãªã£ãŠããããšã確èªããŠãã ããã
ãé 延ã©ã³ã¿ã€ã ããã»ããµãã䜿çšããå ŽåããŒã以å€ã®å€ã¯å®æçã«ã®ã¿æåŸ ããå¿ èŠããããŸãã æ°å€ãé«ãããå ŽåããŸãã¯é·æé0ã«ãªããªãå Žåã¯ãããã€ãã®åé¡ã®å åã§ãã
ãã¹ã®ãã£ãã·ã¥ããã
çè«ãä¿¡ããå¿ èŠã¯ãããŸããã äœæ¥ãå®äºããããVarnishãå¿åã®HTMLããŒãžãæ£ãããã£ãã·ã¥ãããšããäºå®ãå®éã«å確èªããããšããå§ãããŸãïŒ Varnishãæåã«ãã£ãã·ã¥ãããããããŒãåçã«æ¿å ¥ããªãå Žåã¯ã vcl_deliverã«è¿œå ããã ãã§ã ã
if (obj.hits > 0) { set resp.http.X-Varnish-Cache = "HIT"; } else { set resp.http.X-Varnish-Cache = "MISS"; }
å®éã«ã¯ãå¿åãŠãŒã¶ãŒããããŒãžããªã¯ãšã¹ããããšãã«ãã¯ãã¹ãããããã£ãã·ã¥ããããšã確èªããŠãã ããïŒ2åç®ã¯
X-Varnish-Cache: HIT
ããããŒã§å¿çããå¿ èŠããããŸãïŒã ãã®æç¹ã§ãDrupalã®èª¿æ»æžã¿ããŒãžã®ç¡å¹åãåŒãèµ·ãããŸã-Drupalã®ãã£ãã·ã¥ãã¯ãªã¢ããããããŒããåä¿åããŸãïŒããŒãã®ããŒãžãåæããŠããå ŽåïŒãªã©ã Varnishã§ãã£ãã·ã¥ãç¡å¹ã«ãã責任ãããå Žåã¯ãcron Drupalãå¿ããã«å®è¡ããŠãã ããã
調æ»ããããŒãžã«å¯ŸããŠãªã¯ãšã¹ããç¹°ãè¿ããŸãã æåã®åçã«ã¯ããããŒ
X-Varnish-Cache: MISS
ãå«ãŸããŠããå¿ èŠããããŸããããã«ãããDrupalãå¿ èŠãªã¿ã°ãã£ãã·ã¥ã®ç¡å¹åã«ã€ããŠVarnishã«æ£åžžã«éç¥ããåŸè ãåä¿¡ããç¡å¹åãªã¯ãšã¹ããæ£åžžã«åŠçããããšã確èªã§ããŸãã
HTTPå¿çããããŒã®é·ã
Drupal 8ãµã€ãã¯é¢åãªå ŽåããããŸãã ç¹ã«ãããã«ãããç¹å®ã®HTMLããŒãžã«é¢é£ä»ããããã¿ã°ãã£ãã·ã¥ã®é·ããªã¹ããäœæãããå¯èœæ§ããããŸãã å€ãã®WebãµãŒããŒãããã³äžè¬çã«ãç°ãªãå®è£ ã®Webserver + PHPã¹ã¿ãã¯ã§ã¯ãå¿çããããŒã®æ倧é·ã«å¶éãããå ŽåããããŸãã æ¬åœã«ã€ãŸããããšãã§ããŸãã ããã«ããã¹ãç°å¢ã«ãã¹ãïŒåãæšãŠãããïŒããŒã¿ã»ãããããå Žåãåé¡ã¯å®éã®ç°å¢ã§ã®ã¿çºçããŸãã ã¹ã¿ãã¯ã®å±éæ¹æ³ã«å¿ããŠãåé¡ãåŠçããå¿ èŠããããŸãã
æŽæ°ïŒå¿çããããŒã®é·ããããã»ã©åçŽã§ã¯ãªãããšãå€æããŸããã ããã¯ãç§ãããããããŠã³ããŒãããdrupal.orgã®åé¡ã§ãã ãããã¯ãããããŒã®é·ããçããããšããéåžžã«è¯ãä»äºãããŸãwww.drupal.org/project/purge/issues/2952277
Drupal 8ã®Cache APIã«ã€ããŠããäžåºŠ
ãã®èšäºã§èª¬æãããŠããã®ã¯ãDrupal 8ã§ã®ãã£ãã·ã¥APIã®äœ¿çšæ¹æ³ã®ã»ãã®äžéšã§ããç§ã¯å人çã«ããã£ãã·ã¥APIãDrupal 7ãšæ¯èŒããŠäž»èŠãªé©æ°ã§ãããšèããŠããŸãããã£ãã·ã¥API; ãã£ãã·ã¥ãšDrupal 8ã®ã¬ã³ããªã³ã°ãšã®é¢ä¿ã