• WordPress終極提速之靜態頁內存緩存

    大多數WordPress個人博客站長都會使用諸如Hyper Cache、WP Super Cache等緩存插件,使用這類插件可以將PHP動態頁面在首次訪問時生成html靜態頁面并存儲在硬盤中,當其他訪客再次訪問時直接讀取該靜態頁面,這樣不需要再次通過PHP生成動態頁面也不需要再從數據庫中讀取數據,大幅降低系統資源消耗,且大幅提升了頁面打開速度。

    如果不考慮服務器帶寬,那最大的瓶頸就是硬盤了,因為這些生成的靜態頁面都存儲在硬盤上,訪問量大時,硬盤的讀寫速度低會導致網站訪問緩慢,如何在較大的訪問量下依然保持頁面的迅速打開呢?如果你使用VPS、云服務器或獨立服務器,繼續閱讀下去,你會有大收獲:

    先來測測我使用的服務器硬盤讀寫速度:
    # dd if=/dev/zero of=bigfile bs=1M count=500
    500+0 records in
    500+0 records out
    524288000 bytes (524 MB) copied, 19.8486 s, 26.4 MB/s

    再來對比一下服務器內存的讀寫速度:
    #cd /dev/shm
    # dd if=/dev/zero of=bigfile bs=1M count=500
    245+0 records in
    244+0 records out
    256016384 bytes (256 MB) copied, 0.141606 s, 1.8 GB/s

    26.4MB/s與1.8GB/s,天壤之別啊!如果我們把這些生成的靜態文件放到內存里緩存,效果不言而喻。

    幸運的是Linux系統為我們提供了這樣的解決辦法,那就是tmpfs文件系統,tmpfs可以直接使用內存,同時在內存不夠時使用swap分區來存儲。另外需要注意的是tmpfs不具備持久性,重啟后數據不保留,請務必注意,不過我們只用它來存儲緩存文件,即使文件丟失也不影響網站訪問,完全無風險。

    wordpress如何使用tmpfs

    /dev/shm/是一個設備文件,它使用就是tmpfs文件系統(注意:在Centos和Redhat下,/dev/shm目錄是一個鏈接,指向/run/shm目錄,在Ubuntu系統下tmpfs文件系統對應的是/run/shm目錄,可以使用df命令查看),因為/dev/shm/這個目錄不在硬盤上,而是在內存里,它就是所謂的tmpfs。可通過命令 df -h 查看到,tmpfs默認大小為物理內存的一半,當然也可以根據實際情況調整。

    首先為wordpress的緩存文件建立一個目錄wpcache
    # mkdir /dev/shm/wpcache
    賦予讀寫執行權限
    # chmod 1777 /dev/shm/wpcache
    將tmpfs掛載到wordpress緩存插件生成的/cache目錄下
    # mount --bind /dev/shm/wpcache /home/wwwroot/amznz.com/wp-content/cache
    # ls -ld /dev/shm/wpcache
    返回類似下面的內容說明掛載成功
    drwxrwxrwt 3 www www 60 Jul 31 22:50 /dev/shm/wpcache

    此時緩存插件會重新生成靜態頁面文件,過一段時間后,通過命令
    # df -h
    即可查到tmpfs的使用情況。

    需要注意的兩個問題:
    1.根據實際情況(內存大小、文章數量)調整wordpress緩存插件的中的緩存頁面到期時間,否則會占用太多內存;
    2.注意添加swap分區,以防內存不夠用時備用,4G物理內存以下設置swap分區大小為2G即可。
    OK!來測試一下:感受一下,速度有沒有更快一些呢?當然你也可以參考此方法運用在其它類型的網站程序上。

    之前在網上看到有人在wordpress上使用memcache緩存模塊來優化,咱這里也做了個測試,使用memcache緩存模塊與使用共享內存/dev/shm的讀寫測試對比,不多說,自己看吧:

    測試一:讀取100000次數據
    --------------------------------
    //使用memcache
    require_once 'tools/cache/memcached-client.php';
    $mem = new memcached($options);
    $mem->set('x' , '0');
    $time = microtime(TRUE);
    for ($i = 0 ; $i < 100000 ; $i++){ $mem->get('x');
    }
    $end = microtime(TRUE);
    echo round($end - $time , 2);
    --------------------------------
    連續運行三次腳本,結果分別為10.5,10.46,10.63

    --------------------------------
    //使用共享內存/dev/shm
    $time = microtime(TRUE);
    for ($i = 0 ; $i < 100000 ; $i++){
    $data = file_get_contents('/dev/shm/php_system/vipcache');
    }
    $end = microtime(TRUE);
    echo round($end - $time , 2);
    --------------------------------
    連續運行三次腳本,結果分別為3.2,3.25,3.2

    測試二:寫入100000次數據
    --------------------------------
    //使用memcache
    $mem = new memcached($options);
    $time = microtime(TRUE);
    for ($i = 0 ; $i < 100000 ; $i++){ $mem->set('x' , '0');
    }
    $end = microtime(TRUE);
    echo round($end - $time , 2);
    --------------------------------
    連續運行三次腳本,結果分別為10.93,9.22,9.41,與讀取測試結果相差不大,說明memcache的讀與寫時間是差不多的

    --------------------------------
    //使用共享內存/dev/shm
    $time = microtime(TRUE);
    for ($i = 0 ; $i < 100000 ; $i++){
    $data = file_put_contents('/dev/shm/php_system/vipcache' , '0');
    }
    $end = microtime(TRUE);
    echo round($end - $time , 2);
    --------------------------------
    連續運行三次腳本,結果分別為2.5,2.52,2.53,寫跟讀的性能一樣優越

    測試結論:直接操作本地的共享內存,速度比memcache要快很多。

    ? 原文地址: http://www.fhcnec.live/wordpress-cache-tmpfs/
    版權所有!如轉載文章,請務必注明以上引用地址,否則請勿轉載!




  • + ev、pv、ac項目管理中簡寫記憶及計算公式
  • + 極品飛車音樂全集下載
  • + November Was White,December Was Grey
  • + Word插入gif動態圖片方法
  • + 免費手機號碼歸屬地接口
  • + Axure IOS/Android素材大全
  • + fonts.googleapis.com加載慢解決辦法
  • + MySQL數據庫MyISAM轉換InnoDB方法
  • + 百度蜘蛛IP(定期更新)
  • + LNMPA圖片防盜鏈方法
  • + No Update Required
  • + 如果我欠了你五塊錢,請你告訴我

女校体操队投注