挑戰:構建一個WordPress管理儀表板,以有效地顯示來自大約900個博客的Google Analytics數據,分佈在25個多站點實例中。 關鍵是要克服處理如此大的數據集固有的性能障礙。
>>本文詳細介紹了開發過程,突出了遇到的關鍵決策和挑戰。 我們將探討WordPress REST API,PHP與JavaScript辯論,生產環境限制,安全注意事項,數據庫設計,甚至AI的作用。
鍵術語在潛水之前,讓我們澄清一些術語:
- WordPress多站點:
一個核心WordPress功能,可以從單個安裝中啟用多個博客的管理。 博客共享核心文件和數據庫,但具有單個媒體文件夾和博客特定的數據庫表。 - > wordpress 多多站點:
一個用於管理WordPress多站點安裝多個實例的術語。這種方法避免了在不同客戶之間共享一個多站點的複雜性。 > > - 儀表板網站:託管用於查看匯總分析數據的自定義儀表板的站點。
-
客戶端站點:
收集數據的25個WordPress多站點實例。 > 實施策略
>解決方案涉及在儀表板站點和所有25個客戶端站點上安裝的單個WordPress插件。 該插件具有兩個主要功能:
- 通過客戶端站點上的自定義API端點曝光數據。
- > >>從儀表板站點上的客戶端站點刪除數據,緩存並在儀表板上顯示。
- wordpress rest api:基礎> > WordPress REST API是該項目的核心。 它的可擴展性使創建自定義端點可以公開必要的數據。
代碼代碼段:API端點註冊
>
php vs. javaScript:異步優勢
<?php [...] function register(\WP_REST_Server $server) { $endpoints = $this->get(); foreach ($endpoints as $endpoint_slug => $endpoint) { register_rest_route( $endpoint['namespace'], $endpoint['route'], $endpoint['args'] ); } } // ... (rest of the endpoint definitions) ...最初,考慮了一種基於PHP的方法。但是,同步的PHP處理和服務器端執行時間限制使此不切實際。 JavaScript的異步功能提供了出色的解決方案,從而使所有站點都可以從所有站點進行數據檢索。 JavaScript實現大大減少了數據檢索時間:從估計的925秒(同步)到大約2秒(異步)。 但是,瀏覽器和服務器請求限制需要在請求之間延遲150毫秒。
代碼段:異步數據獲取
>
連接PHP和JavaScript
使用wp_localize_script()
>集成了PHP端點和JavaScript代碼,無縫將端點URL和其他必要的數據傳遞給JavaScript。
通過用於API身份驗證和CORS(交叉原始資源共享)標頭的應用程序密碼來解決安全性,以允許從儀表板站點到客戶端站點的跨域請求。 遵循了最少特權的原則,僅限於CORS訪問必要的終點。
代碼段:CORS標頭實現
<?php [...] function register(\WP_REST_Server $server) { $endpoints = $this->get(); foreach ($endpoints as $endpoint_slug => $endpoint) { register_rest_route( $endpoint['namespace'], $endpoint['route'], $endpoint['args'] ); } } // ... (rest of the endpoint definitions) ...
>數據庫緩存 為了提高性能,使用關係數據庫模型在儀表板站點的自定義數據庫表中緩存數據。 數據庫架構最初是使用DocBlocks設計的,然後在LLM的幫助下進行了完善。
代碼段:數據庫表創建SQL
>
async function getBlogsDetails(blogs) { let promises = []; blogs.forEach((blog, index) => { // ... (code for delayed fetch requests) ... }); // ... (code for Promise.all and error handling) ... }結果和未來的考慮
MVP功能性,為博客流量模式提供了寶貴的見解。 未來的改進可能包括使用現代JavaScript框架以及探索無服務器解決方案(例如AWS Lambda),以提高可擴展性和性能。 使用CRON作業進行預取用數據彙編也是一種潛在的增強。
>>本文提供了開發過程的高級概述。 遇到的具體挑戰和解決方案為使用大規模WordPress多元化部署的開發人員提供了寶貴的見解。
以上是WordPress多宗教:一個案例研究的詳細內容。更多資訊請關注PHP中文網其他相關文章!

對於Astro,我們可以在構建過程中生成大部分網站,但是有一小部分服務器端代碼可以使用Fuse.js之類的搜索功能來處理搜索功能。在此演示中,我們將使用保險絲搜索一組個人“書籤”


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。