国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Apache 簡單頁面緩存

jhhfft / 2131人閱讀

摘要:因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過的來達到目的。

維護一套網站系統,因為時間久遠,已不知道他的靜態化系統要如何開啟和如何運作,而首頁及部分頻道頁因為查詢太多,導致運行緩慢,急需一種簡單有效的方法來提高訪問效率。

因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過 Apache 的 URLRewrite 來達到目的。

建立一個目錄(如 cache)來存放靜態化后頁面文件,在網站根目錄的 .htaccess 中寫入規則, 沒有就創建一個:

RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}.cache -f
RewriteRule ^(.*)$ cache/$1.cache [L]

此規則判斷 cache 目錄下是否存在當前 URI 對應的 .cache 后綴的文件, 如果有則將請求定向到該文件. 但是網站頁面本身已采用了 URLRewrite 將 url 映射到了程序腳本上, 而其路徑規則可能對尾部的 "/" 不敏感, 如 /abc/def 與 /abc/def/ 可以是同一個頁面, RewriteCond 并不支持字符串截取、正則替換等操作, 故另添加以下規則來匹配 "/" 結尾的緩存:

RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}/.cache -f
RewriteRule ^(.*)$ cache/$1/.cache [L]

現在, 我們還需要一個簡單腳本來將頁面輸出存入緩存文件中, 可編寫一個 bash 腳本來實現:

#!/bin/bash

WD=$(cd `dirname $0`; pwd)

cache ()
{
    ln="$1"
    fn="$WD/$1.cache"
    tn="$WD/$1.cachx"
    dn=`dirname $fn`

    rm    -f "$fn"
    rm    -f "$tn"
    mkdir -p "$dn"
    wget  -O "$tn" "http://www.xxx.com/$ln"
    mv "$tn" "$fn"
}

if [ "@" != "$1" ]
then
    cache   "$1"
else
    cache ""
    cache xxx/
    cache xxx/xxx
fi

可見腳本中 wget 將輸出存入了臨時文件后更名為目標文件, 這是因為 wget 在執行開始時就會打開文件, 此時請求開始, apache 因文件存在而重定向, 最后拿到的文件就成空的了. 為減少網絡請求時間, 可在 /etc/hosts 中加入 127.0.0.1 www.xxx.com

此腳本使用方法為:

./cache.sh          # 緩存首頁
./cache.sh xxx/     # 緩存 xxx 頻道頁(網站內鏈接可能用 / 結尾)
./cache.sh xxx/xxx  # 緩存 xxx 文章頁(網站內鏈接不會用 / 結尾)
./cache.sh @        # 緩存所有經常訪問的頁面(腳本 else 部分)

可以把經常訪問的頁面加入腳本 else 部分, 將此腳本設為計劃任務, 每隔一段時間刷新緩存一次, 能有效減少請求對數據庫的查詢次數.

但這還不夠, 編輯可能需要在發布文章后立即更新緩存, 以便查看首頁、頻道頁等位置的新聞、推薦等是否正確. 可采用以下 PHP 腳本來執行(如果網站系統是 PHP 編寫):


";
system(__DIR__."/cache.sh "".$uri."" 2>&1");
echo "
";

只需在需要刷新緩存時請求 /cache/cache.php 即可, 可通過 n 參數來指定僅刷新哪個頁面. 為防止惡意利用此腳本執行危險命令(如: abc"; rm -rf "xxx), 以上判斷了僅能刷新指定的頁面; 當然文件改名或加上密碼等措施可能更可靠些.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21630.html

相關文章

  • Apache 簡單頁面緩存

    摘要:因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過的來達到目的。 維護一套網站系統,因為時間久遠,已不知道他的靜態化系統要如何開啟和如何運作,而首頁及部分頻道頁因為查詢太多,導致運行緩慢,急需一種簡單有效的方法來提高訪問效率。 因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過 Ap...

    GitChat 評論0 收藏0
  • Apache 簡單頁面緩存

    摘要:因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過的來達到目的。 維護一套網站系統,因為時間久遠,已不知道他的靜態化系統要如何開啟和如何運作,而首頁及部分頻道頁因為查詢太多,導致運行緩慢,急需一種簡單有效的方法來提高訪問效率。 因為問題主要出在頁面中內容的查詢上,優化方法自然是要減少或杜絕查詢,在不動網站系統代碼的前提下,可通過 Ap...

    laznrbfe 評論0 收藏0
  • Apache 與 Nginx 性能對比:Web 服務器優化技術

    摘要:服務器市場份額。子進程負責創建由指令設置的服務器線程,同時還負責監聽接收到的請求,并將請求分發給處理線程。在版本引入了模塊,這個模塊基于模塊創建的,并加入了獨立的監聽線程來管理請求處理完成后的休眠的連接。基于事件的服務器完勝。 譯文首發于 Apache 與 Nginx 性能對比:Web 服務器優化技術,轉載請注明出處。 多年前 Apache 基金會 Web 服務器 簡稱「Apache」...

    shadowbook 評論0 收藏0
  • Apache 與 Nginx 性能對比:Web 服務器優化技術

    摘要:服務器市場份額。子進程負責創建由指令設置的服務器線程,同時還負責監聽接收到的請求,并將請求分發給處理線程。在版本引入了模塊,這個模塊基于模塊創建的,并加入了獨立的監聽線程來管理請求處理完成后的休眠的連接。基于事件的服務器完勝。 譯文首發于 Apache 與 Nginx 性能對比:Web 服務器優化技術,轉載請注明出處。 多年前 Apache 基金會 Web 服務器 簡稱「Apache」...

    wangbjun 評論0 收藏0
  • 堡塔網站加速插件:為網站加速的插件「wordpress效果測評」

    摘要:堡塔網站加速是寶塔面板為用戶開發的一款網站加速插件網站加速插件,基于頁面緩存的網站加速插件,支持常見的眾多建站程序加速。那么有了堡塔網站加速之后,我們可以使用更多的加速方式,提升網站打開速度。實測加速性能遠強于,以下加速效果來自環境。堡塔網站加速是寶塔面板為用戶開發的一款網站加速插件,基于頁面緩存的網站加速插件,支持常見的眾多建站程序加速。其原理是在http協議層緩存動態頁面,對實時信息及已...

    番茄西紅柿 評論0 收藏2637

發表評論

0條評論

jhhfft

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<