本人從2010年開始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal對多語言、多站點的支持也是我選擇它的重要因素。從最開始的6.x到7.x再到8.x,我一直都在使用,在這過程中需要修改模闆、自建模塊,也學會了PHP以及其它一些技術。在本博客中我也記錄了很多日常使用Drupal中遇到的問題、解決的辦法,希望對其他使用Drupal的朋友有所幫助。

這是 Drupal 分類的頁面,點擊下面标題查看詳細文章内容:
本人從2010年開始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal對多語言、多站點的支持也是我選擇它的重要因素。從最開始的6.x到7.x再到8.x,我一直都在使用,在這過程中需要修改模闆、自建模塊,也學會了PHP以及其它一些技術。在本博客中我也記錄了很多日常使用Drupal中遇到的問題、解決的辦法,希望對其他使用Drupal的朋友有所幫助。

Drupal網站的Views功能相對強大,特别是對于SQL不太熟悉的朋友來說Views的Web界面非常方便,而且數據庫查詢功能一點不弱,用Drupal這麼多年了不能用Views實現的查詢功能極少極少,但也還是存在用Views不好實現的場景,例如我遇到的:
我們一直很重視網站地圖對搜索引擎的提交,以前的MediaWiki自帶生成sitemap的程序,Drupal也有專門的第三方擴展XML Sitemap程序。
但Drupal的這個擴展隻能對node, user, taxonomy term, menu等生成網站地圖,也可以手工添加custom網址加入地圖中,但卻無法把Views批量做成的頁面都加進去。這個問題以前不算很突出、很重要,因為主要頁面都是node頁面或者分類頁面,但采取“在Drupal中直接導入、使用數據庫”的辦法以後,一個網站的主要頁面基本上都是Views生成的,這時Drupa
以前在翻看Drupal的Performance & Scalability插件的時候留意過有一個Fast 404模塊,知道是專門處理404報錯頁面,如果網站有很多404,這個模塊可以降低負載,但沒有詳細了解。
最近還在不斷嘗試降低MySQL服務器的負載,今天幹脆把這個模塊安裝試了試,英文的說明看起來比較複雜,我就把README.txt中的内容把一些要點對照翻譯如下吧:
Fast_404 is Super Fast and Super Amazing. It is also very aggressive
Drupal中兩種可以進行頁面分類的工具是Taxonomy系統和Views方式,前者是專門的分類系統,用得比較多,而Views更加靈活,另外很早前也發現Views中有個叫着Taxonomy term的View,默認沒有開啟,如果開啟的話,可以替代相同路徑的分類頁。
很早前為了降低數據庫負載也曾在部分國外系列網站中啟用過Taxonomy term View,現在發現RDS的慢查詢語句中還有不少是默認分類頁面的翻頁計數SQL語句,現在全面使用Views Litepager,于是在把Taxonomy term這個View啟用,還有幾個措施:
Drupal系統的Views是個功能強大的工具,但也可能引起MySQL數據庫性能問題,為了排查可以打開一些Views的開關設置。
我一般常用的是:
用Drupal很多年一直都是用的自帶搜索,但存在數據量大時速度很慢、搜索結果不準确等問題,中途嘗試過Apache Solr,但感覺太複雜、麻煩了。也知道Views可以用作内部搜索,但一直沒有實施。
最近在設法降低MySQL服務器負載時,查看RDS後台的慢查詢日志,發現有相當多的慢查詢都是Drupal自帶的搜索造成的,特别是數據量大的中文站、搜索漢字詞特别長的時候。還有些數據量大的站,生成搜索索引都需要非常長的時間(生成的搜索表可能比内容類型的字段表大得多),自己去試着搜索也是非常慢(有些需要幾十秒以上,幾乎無法正常使用)。于是就嘗試用Views來替代,現在記錄
多語言支持是Drupal的重要特點,也是我們選擇Drupal的重要原因,我們開發的Drupal網站很多都是帶有多語言的,這其中就需要放置多個語言之間的互相鍊接,我們開始是使用的Language Icons第三方模塊,後來又在手機版和響應式設計中使用了Language Switcher Dropdown,一直到現在。
最近在轉UTF8MB4支持的過程中,把一些老舊的MyISAM引擎表轉為了InnoDB引擎,應該更強大,但我們應用的場景是讀取遠遠大于寫入,不能很好發揮InnoDB的優勢,反而在數據統計方面表現比MyISAM更慢,引起阿裡雲RDS負載(特别是IOPS
最近還在設法降低Drupal網站的MySQL負載,前些天嘗試了安裝entity cache,一般情況下可以把一個頁面的70-120個mysql查詢減少10個左右,然後把memcache使用的内存從1G增加到2G,應該會有一些幫助。
今天再次打開devel查詢,發現多語言網站的頁面中drupal_lookup_path特别多,50種語言就需要有50個這種查詢,而且每個查詢的語言代碼不同,不能很好利用MySQL的查詢緩存機制。
其實這個查詢語句:
SELECT alias FROM url_alias WHERE
Drupal的Views是個非常強大、靈活的工具,但用得不合适也可能導緻數據庫負載的飙升。最近把Drupal站啟用UTF8MB4支持,轉換程序自動把以前的MyISAM引擎轉為InnoDB了,也因此引起阿裡雲RDS的IOPS升高。
又試了一些調整RDS參數等,無效。再看了一些資料、觀察了RDS的進程,還是一些Views的消耗大,特别是數據量大的站。以前在Drupal 6時就在個别網站中啟用過views_litepager這個插件,來替換Views本身的翻頁,犧牲了查看一共有多少頁的功能,不再運行select count(*) ... 這個在InnoDB引擎消耗很
百度MIP我們也使用有一段時間了,現在開始有一點收錄和流量,以前遺留的一些技術問題也需要去解決,包括表單Post方式提交後跳轉網址不對的問題。
前面記錄了一篇《AMP表單Post方式提交後不能跳轉的問題及解決辦法》,Drupal中的搜索功能以前用AMP一樣的辦法:改表單為Get提交方式來實現Drupal中的正确跳轉,對于聯系我們、頁面留言都還沒有太關注,剛才看是可以跳轉的,隻是沒有跳轉到對應的mip頁面,而是跳轉到對應的web頁面。
AMP解決後,我去查了百度MIP官方網站中關于mip-form的文檔,寫得非常簡單,沒有說到需要改Hea
2002-2023 v11.7 a-j-e-0