Wordpress

我們正在將我們的 wordpress 遷移到靜態站點。那就是在 1 個文件夾中創建超過 400,000 個文件夾。子文件夾的數量有限制嗎?

  • July 31, 2020

我們的 wordpress 網站已有數年曆史,有許多文章被索引並在 google 上排名很好。對於任何嚴重的流量,我的 wordpress 伺服器都無法使用 - 即使在幾輪 wordpress 優化之後也會發生這種情況。我們已經受夠了 wordpress 問題,並決定遷移。

我們正在從 wordpress 遷移到靜態站點以獲得更好的性能,以便不會為每個請求呈現頁面,並且靜態 html、css、js 和圖像文件可以直接由 nginx Web 伺服器提供,而不是在後端訪問另一台伺服器。

問題是我們有超過 400,000 個文章,每個文章都有一個靜態頁面,因此我們將在其中儲存相關文件,例如該文章的 html 和圖像文件。所以我們的主網路文件夾將有超過 400,000 個子文件夾。這會是Linux上的問題嗎?或者這會成為我的 Web 伺服器性能的問題嗎?在這種情況下,託管方面有什麼我應該關心的嗎?

這裡有沒有人嘗試過將 ext4 與 nginx 一起使用,並且文件夾中有大量子文件夾?真的會影響性能嗎?有關於 ext4 處理大量文件夾的性能的相互矛盾的報告……我們不希望遷移增加複雜性,除非確實有必要。遷移對我們來說已經是一項艱鉅的任務 :) 並且我們希望使其盡可能簡單,除非存在性能下降的真正風險。有沒有人在單個文件夾中使用具有大量子文件夾或文件的 nginx 網路伺服器?

先感謝您。

這是一種減少Artem S. Tashkinov 的回答中給出的目錄數量並配置 nginx 以遵守原始 URL 結構的方法。

為每個 URL 創建一個目錄結構,每個 URL 的前兩個字元是文件根目錄下的一個目錄。將以這兩個字元開頭的靜態內容放在該目錄下。

使這成為可能的 nginxlocation非常簡單:

   location ~ /(..) {
           root /srv/www/example.com/$1;
   }

這只是將 URL 的前兩個字元放在初始字元之後/,並將其附加到文件根目錄。

請注意,這需要將所有內容移動到兩個字元子目錄中。這包括頂層/index.html,它必須放在$root/in/index.html. /images作為另一個範例,必須將頂級 URL 路徑移動到$root/im/images. 原始文件根目錄將只包含這兩個字元的目錄名稱。

您的文件 URL 將保持不變。例如,可訪問的部落格文章/15-things-to-do-when-visiting-dubai將位於您的文件系統中$root/15/15-things-to-do-when-visiting-dubai/index.html,但仍可通過原始 URL 訪問。(請注意,如果您的原始 URL 沒有尾部斜杠,則會添加一個,並生成 301 重定向以進行 SEO 保存。)

最終文件根目錄最多只有幾千個目錄,而每個目錄或文件可能最多也就幾百個。這很容易被任何 Linux 文件系統處理。

引用自:https://serverfault.com/questions/1025922