shell實現定期清理網站快取資料

來源:互聯網
上載者:User

如果第一個指令碼不行,可以嘗試第二個指令碼方案!

網站採用了一些方法進行加速(redis\cdn),這樣就降低使用者訪問後端mysql的壓力、以及前端速度不太好的問題,對使用者請求到的所有頁面進行了緩衝,既然資料緩衝了,解決使用者看到的頁面是否為最新頁面就提上議程,下面這個指令碼就誕生了。

#!/bin/bash
# Author:Byrd
# Version:0.1
# Site:www.111cn.net
# Contact:root#111cn.net
# define category
for category in basic code database environment error mobile other project remark route service switch system
do
    for ((i=2;i<15;i++))
    do
        # Define return value
        RETURN=`curl -o /dev/null -s -k -w "%{http_code}" http://www.111cn.net /$category/page/$i/?r=y`
        if [ $RETURN -eq 200 ]; then
            # if return value 200,then flush page and category.
            curl -o /dev/null -s -k -w "%{http_code}" http://www.111cn.net /$category/page/$i/?r=y >/dev/null 2>&1
            curl -o /dev/null -s -k -w "%{http_code}" http://www.111cn.net /$category/?r=y >/dev/null 2>&1
        else
            # if return value not 200,then flush category first page and site page.break
            curl -o /dev/null -s -k -w "%{http_code}" http://www.111cn.net /$category/?r=y >/dev/null 2>&1
            curl -o /dev/null -s -k -w "%{http_code}" http://www.111cn.net /?r=y >/dev/null 2>&1
            break
        fi
    done
done

將指令碼加入定時任務,由於網站不定期更新,更新不頻繁,因此每天執行任務即可。

[root@site scripts]# echo '#flush cache' >>/var/spool/cron/root    #注釋                                               
[root@site scripts]# echo '00 2 * * * /bin/sh /byrd/scripts/flush_site.sh >/dev/null 2>&1' >>/var/spool/cron/root    #兩點執行計畫任務                  
[root@site scripts]# crontab -l
#flush cache
00 2 * * * /bin/sh /byrd/scripts/flush_site.sh >/dev/null 2>&1

另外一個思路:

1:redis的主要目的是為了快取資料;
2:把redis快取資料清空,然後重新啟動redis即可完成;
3:因為個人網站一般淩晨4:00左右訪問量最低,且更新周期不快;
這個指令碼一樣的功效,效果不如上面的指令碼,上面的額指令碼缺點是沒有做文章的判斷。

[root@www scripts]# cat clean_redis.sh
#!/bin/bash
# Author:Byrd
# Version:0.1
# Site:www.111cn.net
# Contact:root#111cn.net
CDATA=`ls -l /usr/local/redis/cache/dump.rdb | awk '{print $5}'`    #取得硬碟快取資料大小
REDIS_PID=`ps aux | grep redis | grep -v grep | awk '{print $2}'`    #取得redis進程id
if [ $CDATA -gt 3145728 ]; then
    >/usr/local/redis/cache/dump.rdb
    #kill ${REDIS_PID}
    sleep 3
    #/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
else
    exit 1
fi

然後定時任務,每周或者每天執行一次即可!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.