一種基于改進的粒子群算法的Nginx服務器智能緩存方法
【專利摘要】本發(fā)明涉及一種緩存方法,特別涉及一種基于改進的粒子群算法的Nginx服務器智能緩存方法。本發(fā)明的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,是在不影響Nginx服務器原有緩存技術(shù)和效率的基礎(chǔ)上并行增加的一個智能緩存,其在Nginx服務器現(xiàn)有技術(shù)的基礎(chǔ)上提高了Nginx服務器的效率,更大程度的降低了服務器的開銷。
【專利說明】一種基于改進的粒子群算法的Nginx服務器智能緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種緩存方法,特別涉及一種基于改進的粒子群算法的Nginx服務器智能緩存方法。
【背景技術(shù)】
[0002]Nginx現(xiàn)有的緩存技術(shù)是在客戶端訪問了服務器之后將訪問過的靜態(tài)資源保存,下次訪問相關(guān)內(nèi)容可直接引用,在有限程度上提高了效率,降低了服務器的負載。
[0003]傳統(tǒng)的緩存技術(shù)存在很多缺陷,比如:不支持帶參數(shù)的動態(tài)鏈接,比如read.php?id=l, Nginx服務器對其只保存文件名,所以這個鏈接只能保存為read, php,這樣用戶訪問read.php?id=3時會返回不正確的結(jié)果。另外一個缺陷:Nginx服務器內(nèi)部沒有緩存過期和清理的任何機制,這些緩存的文件會永久性地保存在硬盤上,如果要緩存的東西非常多,那就會占據(jù)所有的硬盤空間。為此可以使用一個shell腳本定期清理,同時可以撰寫php等動態(tài)程序來做實時更新。傳統(tǒng)緩存只能存200狀態(tài)碼,因此后端返回301/302/404等狀態(tài)碼都不會緩存,假如恰好有一個訪問量很大的偽靜態(tài)鏈接被刪除,那就會不停穿透導致后端承載不小壓力。Nginx服務器不會自動選擇內(nèi)存或硬盤作為存儲介質(zhì),一切由配置決定。
【發(fā)明內(nèi)容】
[0004]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種基于改進的粒子群算法的Nginx服務器智能緩存方法,該緩存技術(shù)是在不影響Nginx服務器原有緩存技術(shù)和效率的基礎(chǔ)上并行增加的一個智能緩存,其在Nginx服務器現(xiàn)有技術(shù)的基礎(chǔ)上提高了 Nginx服務器的效率,更大程度的降低了服務器的開銷。
[0005]本發(fā)明所采用的技術(shù)方案如下:
一種基于改進的粒子群算法的Nginx服務器智能緩存方法,是在不影響原Nginx服務器緩存的基礎(chǔ)上并行增加一個智能緩存,所述的智能緩存是根據(jù)粒子群算法獲得,在Nginx服務器代理情況下去訪問服務器資源,并根據(jù)經(jīng)驗、人為設(shè)定參數(shù)優(yōu)化搜索結(jié)果從而將最容易訪問到的資源保存在該智能緩存中。
[0006]Nginx服務器端收到客戶端傳來的訪問請求,經(jīng)過驗證合法后,先到原Nginx服務器緩存中檢索,如果找不到再到所述的智能緩存中查找,同時去相應服務器中獲取,如果能找到資源就返回資源,中斷去服務器訪問的連接,如果在所述的智能緩存中找不到也不會影響正常訪問服務器。
[0007]智能緩存是根據(jù)參數(shù)的改進的粒子群算法尋找最容易被訪問的服務器資源。
[0008]Nginx服務器端在響應請求階段掛著回調(diào)函數(shù)。
[0009]Nginx服務器端在啟動之后即申請緩存,連接服務器。
[0010]智能緩存跟隨Ngnix服務器端啟動就申請了空間,對智能緩存設(shè)定自動清理閾值,對低優(yōu)先級的資源及時進行清理。[0011 ] 智能緩存不但緩存了靜態(tài)資源,也緩存了部分常用的動態(tài)資源。
[0012]原Nginx服務器緩存與智能緩存之間采用了并行技術(shù),在智能緩存找不到資源的情況下不會影響原Nginx服務器緩存去后臺服務獲取資源的效率,在大并發(fā)的情況下,智能緩存會降低速度讓出更多的資源給Nginx服務器主進程。
[0013]本發(fā)明實現(xiàn)的原理如下:
1、在ngx_http_parse_request_line()返回NGX_0K之后,說明這個http請求是合法的,通過判斷該返回值,nginx_http_parse_header_line ()返回 NGX_HTTP_HEADER_DONE 的時候說明所有請求頭已經(jīng)處理完,本專利的回調(diào)函數(shù)在此階段之后的handler模塊調(diào)用,該功能在此開始運行,并行分析請求頭的內(nèi)容并在緩存中進行檢索,在此靜態(tài)資源會到緩存的靜態(tài)區(qū)檢索,動態(tài)資源會去動態(tài)區(qū)檢索,緩存的內(nèi)容包括如表1所示,當返回的內(nèi)容比nginx的handler模塊的本身返回的快的時候?qū)⒅苯幼鳛橄鄳獢?shù)據(jù)返回給客戶端,本身的檢索中止。
[0014]
【權(quán)利要求】
1.一種基于改進的粒子群算法的Nginx服務器智能緩存方法,是在不影響原Nginx服務器緩存的基礎(chǔ)上并行增加一個智能緩存,所述的智能緩存是根據(jù)粒子群算法獲得,在Nginx服務器代理情況下去訪問服務器資源,并根據(jù)經(jīng)驗、人為設(shè)定參數(shù)優(yōu)化搜索結(jié)果從而將最容易訪問到的資源保存在該智能緩存中。
2.根據(jù)權(quán)利要求1所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,Nginx服務器端收到客戶端傳來的訪問請求,經(jīng)過驗證合法后,先到原Nginx服務器緩存中檢索,如果找不到再到所述的智能緩存中查找,同時去相應服務器中獲取,如果能找到資源就返回資源,中斷去服務器訪問的連接,如果在所述的智能緩存中找不到也不會影響正常訪問服務器。
3.根據(jù)權(quán)利要求1所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的智能緩存是根據(jù)參數(shù)的改進的粒子群算法尋找最容易被訪問的服務器資源。
4.根據(jù)權(quán)利要求2所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的Nginx服務器端在響應請求階段掛著回調(diào)函數(shù)。
5.根據(jù)權(quán)利要求1或2所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的Nginx服務器端在啟動之后即申請緩存,連接服務器。
6.根據(jù)權(quán)利要求1所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的智能緩存跟隨Ngnix服務器端啟動就申請了空間,對智能緩存設(shè)定自動清理閾值,對低優(yōu)先級的資源及時進行清理。
7.根據(jù)權(quán)利要求1所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的智能緩存不但緩存了靜態(tài)資源,也緩存了部分常用的動態(tài)資源。
8.根據(jù)權(quán)利要求1所述的一種基于改進的粒子群算法的Nginx服務器智能緩存方法,其特征在于,所述的原Nginx服務器緩存與智能緩存之間采用了并行技術(shù),在智能緩存找不到資源的情況下不會影響原Nginx服務器緩存去后臺服務獲取資源的效率,在大并發(fā)的情況下,智能緩存會降低速度讓出更多的資源給Nginx服務器主進程。
【文檔編號】H04L29/08GK103747030SQ201310672250
【公開日】2014年4月23日 申請日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】路廷文, 戴純興 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司