關于Drupal8
Drupal 8 是目前最優秀最強大的開源CMS☈⊙☉℃℉❅、CMF♦☜☞☝✍☚☛☟✌✽✾✿❁❃,可以做任何系統的開發⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,所以強大的Drupal8也用在了各個領域⒜⒝⒞⒟⒠⒡⒢⒣⒤,包括網站ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、小程序ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ、業務系統⒜⒝⒞⒟⒠⒡⒢⒣⒤、平臺等多種場景ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。Drupal8的特點如下:
-
可擴展的內容模型
-
面向對象OOP架構
-
用戶角色管理
-
靈活的模板
Drupal8的優化建議
Drupal的易用性導致Drupal的性能就會下降㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,因為要考慮很多場景的通用性⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,要考慮兼容✺ϟ☇♤♧♡♢♠♣♥,又有很多種模塊☧☬☸✡♁✙♆。,、':∶;,代碼龐大❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,所以Drupal8相對來講☧☬☸✡♁✙♆。,、':∶;,性能有時候會出現問題⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,本文就Drupal8的優化♦☜☞☝✍☚☛☟✌✽✾✿❁❃,提出以下幾個建議:
-
盡量減少模塊
一個網站①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,通常都會擁有不同功能♀☿☼☀☁☂☄,需要不通模塊♦☜☞☝✍☚☛☟✌✽✾✿❁❃,所以會導致Drupal的模塊越來越多❻❼❽❾❿⓫⓬⓭⓮⓯⓰,因此建議禁用不必要的模塊⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。
-
主題的設計簡潔化
頁面的內容可以簡潔一下㈠㈡㈢㈣㈤㈥㈦,不必要一個頁面很長很多內容放在一個頁面㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,導致也加載比較慢ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。
-
開啟Drupal默認的緩存
Drupal的后臺⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,有默認的緩存功能⑰⑱⑲⑳⓪⓿❶❷❸❹❺,可以開啟㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
-
使用第三方緩存模塊
使用Memcahce①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、Redis 等Drupal模塊可以加速Drupal的緩存웃유ღ♋♂。
-
盡量不要.module文件
在Drupal8架構里面✵✶✷✸✹✺✻✼❄❅,基本都是autoloadⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,OOP編程✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,.module導致加載臃腫⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。
-
盡量不要用hook
如上❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,Hook是函數編程✵✶✷✸✹✺✻✼❄❅,并且會每次調用都執行①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,因此能減少使用Hook最好☧☬☸✡♁✙♆。,、':∶;。
-
不要把所有的東東都放node里面❣❦❧♡۵,自建Entity
眾所周知⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,Drupal的默認entity是node⑰⑱⑲⑳⓪⓿❶❷❸❹❺,但是不要把所有的內容都方到node里面❻❼❽❾❿⓫⓬⓭⓮⓯⓰,比如message♀☿☼☀☁☂☄、跟帖這種⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,導致node表很大ⓣⓤⓥⓦⓧⓨⓩ,網站其他的內容也加載比較慢㈠㈡㈢㈣㈤㈥㈦,建議自建Entity⒜⒝⒞⒟⒠⒡⒢⒣⒤。
-
壓縮CSS☧☬☸✡♁✙♆。,、':∶;、JS等文件
合并CSSⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、JS文件ⓣⓤⓥⓦⓧⓨⓩ,減少文件數量♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
-
使用HTTP gzip壓縮
Apache☾☽❄☃、Nginx都支持gzip壓縮⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,文本文件壓縮比可以達到80%的壓縮♀☿☼☀☁☂☄,因此推薦使用服務器壓縮⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,并且不會產生副作用⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓。
-
使用CDN加速
使用CDN加速靜態資源㈠㈡㈢㈣㈤㈥㈦。
-
圖片使用懶加載
圖片資源可以考慮使用懶加載㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
-
使用Nginx代替apache
相對來講apache要比nginx+fpm慢一些⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,所以推薦使用Nginx+FPM代替apache☧☬☸✡♁✙♆。,、':∶;。
-
可以使用headless Drupal
也可以使用純前端的架構①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,數據通過api的方式獲取數據即可☈⊙☉℃℉❅,實現Headless的Drupal架構㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。