欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

緩存目錄刷新方法和裝置與流程

文檔序號:11950313閱讀:238來源:國知局
本發(fā)明屬于互聯(lián)網領域,具體地說,涉及一種緩存目錄刷新方法和裝置。
背景技術
::字典樹(Trie樹),是一種有序的樹,用于保存關聯(lián)數(shù)組,其中的鍵通常是字符串。Trie的強大之處就在于它的時間復雜度。它的插入和查詢時間復雜度都為O(k),其中k為key的長度,與Trie中保存了多少個元素無關。字典樹的典型應用是用于統(tǒng)計和排序大量的字符串(但不僅限于字符串),所以經常被搜索引擎系統(tǒng)用于文本詞頻統(tǒng)計。Hash,一般譯做“散列”或“哈?!?,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。CDN(ContentDeliveryNetwork,內容分發(fā)網絡)是構建在網絡之上的內容分發(fā)網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發(fā)、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發(fā)技術。CDN的基本原理是廣泛采用各種緩存服務器,將這些緩存服務器分布到用戶訪問相對集中的地區(qū)或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的緩存服務器上,由緩存服務器直接響應用戶請求。刷新是CDN清除臟數(shù)據(jù)不可或缺的功能,目前CDN緩存系統(tǒng)是通 過針對目錄下的每個url執(zhí)行刷新操作,其具體過程包括:1、CDN緩存系統(tǒng)接收到目錄刷新通知;2、根據(jù)磁盤已記錄的每個目錄存儲的URL,進行多次磁盤I/O和字符串比較;3、找出目錄下存儲的全部URL,逐一做刷新操作。這種處理方式不但需要占用大量的磁盤存儲,而且及時性和準確性都不能得到保證。技術實現(xiàn)要素:有鑒于此,本申請?zhí)峁┝艘环N緩存目錄刷新方法和裝置,解決了文件目錄刷新需占用大量的磁盤存儲空間并且即時性和準確性較低的技術問題。為了解決上述技術問題,本申請公開了一種緩存目錄刷新方法,包括:接收到客戶端的數(shù)據(jù)請求,所述數(shù)據(jù)請求包括URL地址;在由哈希表和哈希字典樹建立的目錄結構中,查詢到所述URL地址對應的緩存目錄;判斷所述緩存目錄下是否已掛載刷新任務;當所述緩存目錄下已掛載刷新任務時,判斷所述緩存目錄下的內容的保存時刻是否早于所述刷新任務的下發(fā)時刻;當所述緩存目錄下的內容的保存時刻早于所述刷新任務的下發(fā)時刻時,觸發(fā)所述緩存目錄的回源請求至源站,從所述源站刷新所述緩存目錄下的內容。所述方法還包括:當所述緩存目錄下未掛載刷新任務時,判斷所述緩存目錄下的內容是否已過期;當所述緩存目錄下的內容已過期時,觸發(fā)所述緩存目錄的回源請求至源站;從所述源站刷新所述緩存目錄下的內容。所述在由哈希表和哈希字典樹建立的目錄結構中,查詢到所述URL地址對應的緩存目錄包括:在所述哈希表中匹配出所述URL地址中的域名,在與所述域名對應的哈希字典樹中,查詢到所述域名下的緩存目錄。所述接收到客戶端的數(shù)據(jù)請求之前,所述方法還包括:接收到刷新任務;在所述由哈希表和哈希字典樹建立的目錄結構中,在所述刷新任務對應的緩存目錄下掛載刷新任務并記錄所述刷新任務的下發(fā)時刻。所述接收到刷新任務之后,所述方法還包括:對所述刷新任務進行數(shù)據(jù)持久化處理,在磁盤中保存所述刷新任務。所述刷新任務包括生效時間段。所述方法還包括:發(fā)送所述緩存目錄下刷新后的內容至所述客戶端;當所述緩存目錄下的文件的保存時刻晚于所述刷新任務的下發(fā)時刻時,或者當所述緩存目錄下的內容未過期時,發(fā)送所述緩存目錄下的內容至所述客戶端。當所述緩存目錄下已掛載刷新任務時,所述方法還包括:判斷所述刷新任務是否包括所述生效時間段;當所述刷新任務包括所述生效時間段時,判斷所述緩存目錄下的內容的保存時刻是否在所述生效時間段之內;當所述緩存目錄下的內容的保存時刻不在所述生效時間段之內時,發(fā)送所述緩存目錄下的內容至所述客戶端;當所述緩存目錄下的內容的保存時刻在所述生效時間段之內時,或者當所述刷新任務不包括所述生效時間段時,判斷所述緩存目錄下的內容的保存時刻是否早于所述刷新任務的下發(fā)時刻。所述方法還包括:當重新啟動時,根據(jù)當前時間確定所述磁盤中保存的有效的刷新任務;在所述目錄結構中加載所述有效的刷新任務。所述觸發(fā)所述緩存目錄的回源請求至源站,從所述源站刷新所述緩存目錄下的內容之后,所述方法還包括:記錄所述緩存目錄下刷新后的內容在磁盤中的第一偏移量;每隔預設時長判斷所述磁盤執(zhí)行寫入操作時的當前偏移量與所述第一偏移量是否相同;當所述磁盤執(zhí)行寫入操作時的當前偏移量與所述第一偏移量相同時,刪除所述緩存目錄下的所述刷新任務。為了解決上述技術問題,本申請公開了一種緩存目錄刷新方法,包括:接收到客戶端的數(shù)據(jù)請求,所述數(shù)據(jù)請求包括URL地址;在由哈希表和哈希字典樹建立的目錄結構中,查詢到所述URL地址對應的緩存目錄;判斷所述緩存目錄下是否已掛載刷新任務;當所述緩存目錄下未掛載刷新任務時,判斷所述緩存目錄下的內容是否已過期;當所述緩存目錄下的內容已過期時,觸發(fā)所述緩存目錄的回源請求至源站;從所述源站刷新所述緩存目錄下的內容。為了解決上述技術問題,本申請還公開了一種緩存目錄刷新裝置,包括:第一接收模塊,用于接收到客戶端的數(shù)據(jù)請求,所述數(shù)據(jù)請求包括URL地址;查詢模塊,用于在由哈希表和哈希字典樹建立的目錄結構中,查詢到所 述URL地址對應的緩存目錄;第一判斷模塊,用于判斷所述緩存目錄下是否已掛載刷新任務;第二判斷模塊,用于當所述緩存目錄下已掛載刷新任務時,判斷所述緩存目錄下的內容的保存時刻是否早于所述刷新任務的下發(fā)時刻;第一回源模塊,用于當所述緩存目錄下的文件的保存時刻早于所述刷新任務的下發(fā)時刻時,觸發(fā)所述緩存目錄的回源請求至源站,從所述源站刷新所述緩存目錄下的內容。所述裝置還包括:第三判斷模塊,用于當所述緩存目錄下未掛載刷新任務時,判斷所述緩存目錄下的內容是否已過期;第二回源模塊,用于當所述緩存目錄下的內容已過期時,觸發(fā)所述緩存目錄的回源請求至源站;從所述源站刷新所述緩存目錄下的內容。所述查詢模塊包括:匹配子模塊,用于在所述哈希表中匹配出所述URL地址中的域名,查詢子模塊,用于在與所述域名對應的哈希字典樹中,查詢到所述域名下的緩存目錄。所述裝置還包括:第二接收模塊,用于接收到刷新任務;處理模塊,用于在所述由哈希表和哈希字典樹建立的目錄結構中,在所述刷新任務對應的緩存目錄下掛載刷新任務并記錄所述刷新任務的下發(fā)時刻。所述裝置還包括:保存模塊,用于對所述刷新任務進行數(shù)據(jù)持久化處理,在磁盤中保存所述刷新任務。所述刷新任務包括生效時間段。所述裝置還包括:第一發(fā)送模塊,用于發(fā)送所述緩存目錄下刷新后的內容至所述客戶端;第二發(fā)送模塊,用于當所述緩存目錄下的文件的保存時刻晚于所述刷新任務的下發(fā)時刻時,或者當所述緩存目錄下的內容未過期時,發(fā)送所述緩存目錄下的內容至所述客戶端。所述裝置還包括:第四判斷模塊,用于判斷所述刷新任務是否包括所述生效時間段;第五判斷模塊,用于當所述刷新任務包括所述生效時間段時,判斷所述緩存目錄下的內容的保存時刻是否在所述生效時間段之內;第三發(fā)送模塊,用于當所述緩存目錄下的內容的保存時刻不在所述生效時間段之內時,發(fā)送所述緩存目錄下的內容至所述客戶端;第六判斷模塊,用于當所述緩存目錄下的內容的保存時刻在所述生效時間段之內時,或者當所述刷新任 務不包括所述生效時間段時,判斷所述緩存目錄下的內容的保存時刻是否早于所述刷新任務的下發(fā)時刻。所述裝置還包括:確定模塊,用于當重新啟動時,根據(jù)當前時間確定所述磁盤中保存的有效的刷新任務;在所述目錄結構中加載所述有效的刷新任務。所述裝置還包括:記錄模塊,用于記錄所述緩存目錄下刷新后的內容在磁盤中的第一偏移量;第七判斷模塊,用于每隔預設時長判斷所述磁盤執(zhí)行寫入操作時的當前偏移量與所述第一偏移量是否相同;刪除模塊,用于當所述磁盤執(zhí)行寫入操作時的當前偏移量與所述第一偏移量相同時,刪除所述緩存目錄下的所述刷新任務。為了解決上述技術問題,本申請還公開了一種緩存目錄刷新裝置,包括:第一接收模塊,用于接收到客戶端的數(shù)據(jù)請求,所述數(shù)據(jù)請求包括URL地址;查詢模塊,用于在由哈希表和哈希字典樹建立的目錄結構中,查詢到所述URL地址對應的緩存目錄;第一判斷模塊,用于判斷所述緩存目錄下是否已掛載刷新任務;第三判斷模塊,用于當所述緩存目錄下未掛載刷新任務時,判斷所述緩存目錄下的內容是否已過期;第二回源模塊,用于當所述緩存目錄下的內容已過期時,觸發(fā)所述緩存目錄的回源請求至源站;從所述源站刷新所述緩存目錄下的內容。與現(xiàn)有技術相比,本申請可以獲得包括以下技術效果:降低了同時進行的刷新任務的數(shù)量,減少了對磁盤空間的占用,根據(jù)客戶端的數(shù)據(jù)請求判斷相應的緩存目錄是否需要刷新,保證了數(shù)據(jù)刷新的及時性和準確性。當然,實施本申請的任一產品必不一定需要同時達到以上所述的所有技術效果。附圖說明此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:圖1是本申請實施例的一種緩存目錄刷新方法的流程示意圖;圖2是本申請實施例的目錄結構示意圖。圖3是本申請實施例的一種緩存目錄刷新方法的流程示意圖;圖4是本申請實施例的一種緩存目錄刷新方法的流程示意圖;圖5是本申請實施例的一種緩存目錄刷新方法的流程示意圖;圖6是本申請實施例的淘汰過期刷新任務的流程示意圖;圖7是本申請實施例的一種緩存目錄刷新裝置的結構示意圖。具體實施方式以下將配合附圖及實施例來詳細說明本發(fā)明的實施方式,藉此對本發(fā)明如何應用技術手段來解決技術問題并達成技術功效的實現(xiàn)過程能充分理解并據(jù)以實施。圖1是本申請實施例提供的一種緩存目錄刷新方法,適用于緩存服務器設備,該方法包括以下步驟。在步驟S101中,接收到客戶端的數(shù)據(jù)請求,數(shù)據(jù)請求包括URL地址。該URL地址包括域名和目錄,其結構為:域名/一級目錄/二級目錄/…/n級目錄(即domain/path1/path2/…/pathn),例如abcd.com/e/fg/h。在步驟S102中,在由哈希表和哈希字典樹建立的目錄結構中,查詢到URL地址對應的緩存目錄。該目錄結構存儲于緩存服務器設備的內存中,包括哈希表(hashtable)和哈希字典樹(hashtrie)兩部分,其中,哈希表用于存儲域名,哈希字典樹用于建立緩存目錄,每個域名對應著一個哈希字典樹,該哈希字典樹存儲該域名下的緩存目錄。緩存服務器設備首先在哈希表中匹配出數(shù)據(jù)請求中URL地址的域名,確定該域名對應的哈希字典樹,在與該域名對應的哈希字典樹中查詢該域名下的緩存目錄。在哈希字典樹中,代表一級目錄的節(jié)點是其每個二級目錄節(jié)點的父節(jié)點,根據(jù)URL地址的目錄層級,在哈希字典樹中逐級查詢到相應 的緩存目錄。例如圖2所示的目錄結構示意圖,查詢abcd.com/e/fg/h對應的緩存目錄的過程如下:A1、根據(jù)域名abcd.com的哈希值在內存中的哈希表20匹配到域名abcd.com的存儲位置201;A2、確定與域名abcd.com的存儲位置201對應的哈希字典樹211;A3、在哈希字典樹211的一級節(jié)點中查詢到代表字符串e的節(jié)點a2,在節(jié)點a2的子節(jié)點中查詢到代表字符串fg的節(jié)點b3,在節(jié)點b3的子節(jié)點中查詢到代表字符串h的節(jié)點c2。采用上述目錄結構可以使百萬級的緩存目錄所占用的系統(tǒng)內存在200M以下,對響應時間的影響在1毫秒以下,使緩存服務器設備保持較高的處理效率。在步驟S103中,判斷緩存目錄下是否已掛載刷新任務。當緩存目錄下已掛載刷新任務時,執(zhí)行步驟S104;當緩存目錄下未掛載刷新任務時,執(zhí)行步驟S107。緩存服務器設備接收到源站下發(fā)的刷新任務時,不會立刻主動向該源站請求刷新相應的緩存目錄下的內容,而會將刷新任務掛載到內存中相應的緩存目錄,接收到來自客戶端的數(shù)據(jù)請求時再判斷是否需要刷新該緩存目錄下的內容,在掛載命令中通過參數(shù)方式記錄刷新任務的下發(fā)時刻。緩存服務器設備判斷與URL地址對應的緩存目錄下是否已掛載刷新任務。在步驟S104中,判斷緩存目錄下的內容的保存時刻是否早于刷新任務的下發(fā)時刻。當緩存目錄下的內容的保存時刻早于刷新任務的下發(fā)時刻時,執(zhí)行步驟S105,當緩存目錄下的文件的保存時刻晚于刷新任務的下發(fā)時刻時,執(zhí)行步驟S108。在步驟S105中,觸發(fā)緩存目錄的回源請求至源站,從源站刷新緩存目錄下的內容。如果緩存目錄下的內容的保存時刻早于刷新任務的下發(fā)時刻,代表該緩存目錄下的內容還沒有刷新,該緩存目錄下的內容目前屬于臟數(shù)據(jù)。此時觸發(fā)該緩存目錄的回源請求至源站,從源站刷新該緩存目錄下的內容,從而淘汰原有的臟數(shù)據(jù)。在步驟S106中,發(fā)送緩存目錄下刷新后的內容至客戶端。在步驟S107中,判斷緩存目錄下的內容是否已過期。當緩存目錄下的內容已過期時,執(zhí)行步驟S105;當緩存目錄下的內容未過期時,執(zhí)行步驟S108。緩存服務器設備對緩存數(shù)據(jù)設有過期時間,當緩存目錄下未掛載刷新任務時,判斷該緩存目錄下的內容是否已過期,如果已過期則代表該緩存目錄下的內容屬于臟數(shù)據(jù),需要進行刷新,從而觸發(fā)相應的回源請求至源站,刷新該緩存目錄下的內容。在步驟S108中,發(fā)送緩存目錄下的內容至客戶端。當緩存目錄下的文件的保存時刻晚于刷新任務的下發(fā)時刻時,或者當緩存目錄下的內容未過期時,代表該緩存目錄下的內容已是最新的內容,可以直接返回給客戶端。本申請實施例將緩存服務器設備的主動刷新模式變?yōu)榫彺婺夸浵聝热莸谋粍邮Ф|發(fā)回源來刷新內容的模式,降低了同時進行的刷新任務的數(shù)量,減少了對磁盤空間的占用,根據(jù)客戶端的數(shù)據(jù)請求判斷相應的緩存目錄是否需要刷新,保證了數(shù)據(jù)刷新的及時性和準確性,同時在內存中引入哈希表和哈希字典樹組成的目錄結構,使得百萬級緩存目錄所占用的系統(tǒng)內存在200M以下,對于響應時間的影響在1毫秒以下,使緩存服務器設備保持較高的處理效率。緩存服務器設備在接收到客戶端的數(shù)據(jù)請求之前,需要將本地磁盤存儲的內容映射到內存中,在內存中建立相應的映射目錄結構,該目錄結構由哈希表和哈希字典樹組成。緩存服務器設備接收到來自源站的刷新任務,該刷新任務也包括由域名和目錄組成的URL地址,域名/一級目錄/二級目錄/…/n級目錄(即domain/path1/path2/…/pathn)。緩存服務器設備接收到刷新任務后,不會立刻向源站刷新相應的緩存目錄下的內容,而是在刷新任務對應的緩存目錄下掛載刷新任務并記錄刷新任務的下發(fā)時刻。該掛載命令中包括參數(shù)、設備名稱、掛載點(即相應的緩存目錄)等信息。緩存服務器設備將接收到的刷新任務掛載到相應的緩存目錄下,并以參數(shù)的形式記錄該刷新任務的下發(fā)時刻,從而將刷新任務的數(shù)據(jù)存儲到了內存中。而緩存服務器出現(xiàn)異常宕機或重啟時,內存中的數(shù)據(jù)會丟失,因此,在一個實施例中,緩存服務 器接收到刷新任務后,對內存中的目錄結構的數(shù)據(jù)進行數(shù)據(jù)持久化處理,在磁盤中記錄目錄結構的數(shù)據(jù),以防止緩存服務器異常重啟而造成的數(shù)據(jù)丟失。當緩存服務器出現(xiàn)異常宕機或重啟,內存數(shù)據(jù)丟失時,可以從磁盤中重新加載目錄結構的數(shù)據(jù)。在一個實施例中,如圖3所示的一種緩存目錄刷新方法,適用于緩存服務器設備,該方法包括以下步驟。在步驟S301中,接收到刷新任務,所述刷新任務包括第一URL地址。在步驟S302中,在由哈希表和哈希字典樹建立的目錄結構中,在第一URL地址對應的緩存目錄下掛載該刷新任務并記錄該刷新任務的下發(fā)時刻。在步驟S303中,接收到客戶端的數(shù)據(jù)請求,數(shù)據(jù)請求包括第一URL地址。在步驟S304中,在由哈希表和哈希字典樹建立的目錄結構中,查詢到第一URL地址對應的緩存目錄。此時第一URL地址對應的緩存目錄下已掛載了刷新任務。在步驟S305中,判斷第一URL地址對應的緩存目錄下的內容的保存時刻是否早于刷新任務的下發(fā)時刻。當?shù)谝籙RL地址對應的緩存目錄下的內容的保存時刻早于刷新任務的下發(fā)時刻時,執(zhí)行步驟S306;當?shù)谝籙RL地址對應的緩存目錄下的內容的保存時刻晚于刷新任務的下發(fā)時刻時,執(zhí)行步驟S308。在步驟S306中,觸發(fā)第一URL地址對應的緩存目錄的回源請求至源站,從源站刷新第一URL地址對應的緩存目錄下的內容。在步驟S307中,發(fā)送第一URL地址對應的緩存目錄下刷新后的內容至客戶端。在步驟S308中,發(fā)送第一URL地址對應的緩存目錄下的內容至客戶端。在一個實施例中,如圖4所示的一種緩存目錄刷新方法,適用于緩存服務器設備,該方法包括以下步驟。在步驟S401中,接收到刷新任務,所述刷新任務包括第一URL地址。在步驟S402中,在由哈希表和哈希字典樹建立的目錄結構中,在第一URL地址對應的緩存目錄下掛載該刷新任務并記錄該刷新任務的下發(fā)時刻。在步驟S403中,接收到客戶端的數(shù)據(jù)請求,數(shù)據(jù)請求包括第二URL地址。在步驟S404中,在由哈希表和哈希字典樹建立的目錄結構中,查詢到第二URL地址對應的緩存目錄。此時第二URL地址對應的緩存目錄下未掛載刷新任務。在步驟S405中,判斷第二URL地址對應的緩存目錄下的內容是否已過期。當?shù)诙RL地址對應的緩存目錄下的內容已過期時,執(zhí)行步驟S406;當?shù)诙RL地址對應的緩存目錄下的內容未過期時,執(zhí)行步驟S在步驟S406中,觸發(fā)第二URL地址對應的緩存目錄的回源請求至源站,從源站刷新第二URL地址對應的緩存目錄下的內容。在步驟S407中,發(fā)送第二URL地址對應的緩存目錄下刷新后的內容至客戶端。在步驟S408中,發(fā)送第二URL地址對應的緩存目錄下的內容至客戶端。在現(xiàn)有技術中,源站下發(fā)的刷新任務屬于全量刷新,刷新操作會將該目錄下的正常數(shù)據(jù)和源站由于刷新文件產生的臟數(shù)據(jù)一起刷新,造成緩存命中率下降和回源成本增加的問題。本申請實施例的刷新任務中增加了生效時間段的維度,在刷新任務下發(fā)時可以明確指定生效的起始時間(starttimestamp)和結束時間(endtimestamp),如果緩存中的內容生成時間點不在這一生效時間段[start,end]范圍之內,則都不會被刷掉,還可以繼續(xù)直接返回給客戶端,不僅提高了緩存命中率,也減少了因刷新引起的回源流量增加的問題。如圖5所示,該方法包括以下步驟。在步驟S501中,接收到刷新任務,該刷新任務包括生效時間段。例如,該刷新任務中包括URL地址abcd.com/e/fg/h,生效時間段為[m,n],下發(fā)時刻為t1。在步驟S502中,對刷新任務的進行數(shù)據(jù)持久化處理,在磁盤中保存刷新任務。接收到刷新任務時,將刷新任務的數(shù)據(jù)進行持久化處理,根據(jù)該刷新任務對應的緩存目錄,將刷新任務的數(shù)據(jù)刷新到磁盤保存的目錄結構數(shù)據(jù)中。在步驟S503中,在由哈希表和哈希字典樹建立的目錄結構中,在刷新任務對應的緩存目錄下掛載刷新任務并記錄刷新任務的生效時間段和下發(fā)時刻。將刷新任務掛載到內存中與URL地址對應的緩存目錄abcd.com/e/fg/h中,并以參數(shù)的形式記錄刷新任務的生效時間段[m,n]以及下發(fā)時刻t1。在步驟S504中,接收到客戶端的數(shù)據(jù)請求,數(shù)據(jù)請求包括URL地址。在步驟S505中,在由哈希表和哈希字典樹建立的目錄結構中,查詢到URL地址對應的緩存目錄。在步驟S506中,判斷緩存目錄下是否已掛載刷新任務。當緩存目錄下已掛載刷新任務時,執(zhí)行步驟S507;當緩存目錄下未掛載刷新任務時,執(zhí)行步驟S513。在步驟S507中,判斷刷新任務是否包括生效時間段。當刷新任務包括生效時間段時,執(zhí)行步驟S508;當刷新任務不包括生效時間段時,執(zhí)行步驟S510。緩存服務器設備判斷緩存目錄中掛載的刷新任務是否包括生效時間段。在步驟S508中,判斷緩存目錄下的內容的保存時刻是否在生效時間段之內。當緩存目錄下的內容的保存時刻在生效時間段之內時,執(zhí)行步驟S510,當緩存目錄下的內容的保存時刻不在生效時間段之內時,執(zhí)行步驟S509例如,數(shù)據(jù)請求中的URL地址包括abcd.com/e/fg/h,判斷出相應的緩存目錄中已掛載刷新任務,且該刷新任務中包括生效時間段[m,n]和下發(fā)時刻t1。該緩存目錄下的內容的保存時刻為t2,判斷保存時刻t2是否屬于生效時間段[m,n]。在步驟S509中,發(fā)送緩存目錄下的內容至客戶端。當步驟S508判斷出緩存目錄下的內容的保存時刻t2不在生效時間段[m,n]之內時,該緩存目錄下當前保存的內容不需要進行刷新操作,可以直接將緩存目錄下的內容發(fā)送至客戶端;或者,當步驟S510判斷出緩存目錄abcd.com/e/fg/h下的內容的保存時刻t2晚于刷新任務的下發(fā)時刻t1時,代表該緩存目錄abcd.com/e/fg/h下的內容已經被刷新,不需要再進行刷新操作,可以直接將緩存目錄下的內容發(fā)送至客戶端;或者,當步驟S513判斷出緩存目錄abcd.com/e/dh/c下未掛載刷新任務并且內容未過期時,可以直接將緩存目錄下的內容發(fā)送至客戶端。在步驟S510中,判斷緩存目錄下的內容的保存時刻是否早于刷新任務的下發(fā)時刻。當緩存目錄下的內容的保存時刻早于刷新任務的下發(fā)時刻時,執(zhí)行步驟S511;當緩存目錄下的內容的保存時刻晚于刷新任務的下發(fā)時刻時,執(zhí)行步驟S509。在步驟S511中,觸發(fā)緩存目錄的回源請求至源站,從源站刷新緩存目錄下的內容。當步驟S510判斷出緩存目錄abcd.com/e/fg/h下的內容的保存時刻t2早于刷新任務的下發(fā)時刻t1時,代表該緩存目錄掛載刷新任務后,內容還沒有進行刷新,此時觸發(fā)緩存目錄abcd.com/e/fg/h的回源請求至源站,從源站刷新緩存目錄abcd.com/e/fg/h下的內容;或者,當步驟S513判斷出緩存目錄abcd.com/e/dh/c下未掛載刷新任務但內容已過期時,需要向源站回源刷新該緩存目錄下的內容,此時觸發(fā)緩存目錄abcd.com/e/dh/c的回源請求至源站,從源站刷新緩存目錄abcd.com/e/dh/c下的內容。在步驟S512中,發(fā)送緩存目錄下刷新后的內容至客戶端。緩存服務器對數(shù)據(jù)請求中的URL地址對應的緩存目錄下的內容進行刷新后,將刷新后的內容發(fā)送至客戶端。在步驟S513中,判斷緩存目錄下的內容是否已過期。當緩存目錄下的內容已過期時,執(zhí)行步驟S511;當緩存目錄下的內容未過期時,執(zhí)行步驟S509。例如,數(shù)據(jù)請求中的URL地址包括abcd.com/e/dh/c,查詢到該URL地址對應的緩存目錄并沒有掛載刷新任務,則進一步判斷該緩存目錄 abcd.com/e/dh/c下的內容是否已過期。本申請實施例為刷新任務增加了生效時間段的維度,在刷新任務下發(fā)時可以明確指定生效時間段,緩存目錄下的內容保存時刻不在生效時間段之內就不會被刷新,還可以繼續(xù)直接返回給客戶端,不僅提高了緩存命中率,也減少了因全量刷新引起的回源流量增加的問題。緩存服務器設備接收到的刷新任務包括生效時間段時,為了防止重啟時內存數(shù)據(jù)丟失,將刷新任務進行數(shù)據(jù)持久化,寫入到磁盤中。緩存服務器設備重啟時,根據(jù)當前時間確定磁盤中保存的有效的刷新任務,即當前時間如果在刷新任務的生效時間段之內,則確定刷新任務有效。將磁盤中當前所有有效的刷新任務加載到內存中的目錄結構中,在緩存服務器設備重啟后只加載仍然有效的刷新任務,從而可以快速重建內存中的目錄結構中的哈希字典樹并且降低重建后的目錄結構對內存的占用。由于緩存服務器容量的限制,經過刷新操作新寫入的緩存內容會覆蓋之前很久沒有訪問的數(shù)據(jù),可以理解為緩存內容會循環(huán)寫整個磁盤空間。如果寫磁盤一圈之后,之前的內容都會被覆蓋淘汰,但現(xiàn)有技術中,針對這些內容的刷新任務還在內存的目錄結構中,還要對這些任務做不必要的校驗。本申請實施例會對已被覆蓋的內容所在的緩存目錄中所掛載的刷新任務進行淘汰,如圖6所示,該方法包括以下步驟。在步驟S601中,觸發(fā)緩存目錄的回源請求至源站,從源站刷新緩存目錄下的內容。例如,刷新緩存目錄abcd.com/e/fg/h下的內容。在步驟S602中,記錄緩存目錄下刷新后的內容在磁盤中的第一偏移量。緩存目錄abcd.com/e/fg/h下刷新后的內容寫入到磁盤時,記錄該刷新后的內容在磁盤中的第一偏移量,通過該第一偏移量確定刷新后的內容在磁盤中的寫入位置。在步驟S603中,每隔預設時長判斷磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量是否相同。當磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量相同時,執(zhí)行步驟S604;當磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量 不同時,流程結束,不進行任何操作。緩存服務器設備每隔預設時長檢測執(zhí)行寫入操作時的當前偏移量,判斷第一偏移量是否與磁盤執(zhí)行寫入操作時的當前偏移量相同。在步驟S604中,刪除緩存目錄下的刷新任務。當磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量相同時,代表磁盤已經完整的寫過了一圈,例如在磁盤的第一偏移量位置處寫入的緩存目錄abcd.com/e/fg/h下的內容已經被其他數(shù)據(jù)覆蓋,不會再有針對該內容的數(shù)據(jù)請求,在內存空間建立的目錄結構中該緩存目錄下掛載的刷新任務也需要相應的淘汰掉,因此將內存中該緩存目錄abcd.com/e/fg/h下掛載的刷新任務刪除,從而減少了目錄結構的內存占用,也減少了重啟時在內存中加載目錄結構所耗費的時間。圖7是本申請實施例提供的一種緩存目錄刷新裝置,該裝置包括:第一接收模塊70,用于接收到客戶端的數(shù)據(jù)請求,數(shù)據(jù)請求包括URL地址;查詢模塊71,用于在由哈希表和哈希字典樹建立的目錄結構中,查詢到URL地址對應的緩存目錄;第一判斷模塊72,用于判斷緩存目錄下是否已掛載刷新任務;第二判斷模塊73,用于當緩存目錄下已掛載刷新任務時,判斷緩存目錄下的內容的保存時刻是否早于刷新任務的下發(fā)時刻;第一回源模塊74,用于當緩存目錄下的文件的保存時刻早于刷新任務的下發(fā)時刻時,觸發(fā)緩存目錄的回源請求至源站,從源站刷新緩存目錄下的內容。在一個實施例中,該裝置還包括:第三判斷模塊75,用于當緩存目錄下未掛載刷新任務時,判斷緩存目錄下的內容是否已過期;第二回源模塊76,用于當緩存目錄下的內容已過期時,觸發(fā)緩存目錄的回源請求至源站;從源站刷新緩存目錄下的內容。其中,該查詢模塊71包括:匹配子模塊,用于在哈希表中匹配出URL地址中的域名,查詢子模塊,用于在與域名對應的哈希字典樹中,查詢到域名下的緩存目錄。在一個實施例中,該裝置還包括:第二接收模塊,用于接收到刷新任務;處理模塊,用于在由哈希表和哈希字典樹建立的目錄結構中,在刷新任務對應的緩存目錄下掛載刷新任務并記錄刷新任務的下發(fā)時刻。在一個實施例中,該裝置還包括:保存模塊,用于對刷新任務進行數(shù)據(jù)持久化處理,在磁盤中保存刷新任務。在一個實施例中,該刷新任務包括生效時間段。在一個實施例中,該裝置還包括:第一發(fā)送模塊,用于發(fā)送緩存目錄下刷新后的內容至客戶端;第二發(fā)送模塊,用于當緩存目錄下的文件的保存時刻晚于刷新任務的下發(fā)時刻時,或者當緩存目錄下的內容未過期時,發(fā)送緩存目錄下的內容至客戶端。在一個實施例中,該裝置還包括:第四判斷模塊,用于判斷刷新任務是否包括生效時間段;第五判斷模塊,用于當刷新任務包括生效時間段時,判斷緩存目錄下的內容的保存時刻是否在生效時間段之內;第三發(fā)送模塊,用于當緩存目錄下的內容的保存時刻不在生效時間段之內時,發(fā)送緩存目錄下的內容至客戶端;第六判斷模塊,用于當緩存目錄下的內容的保存時刻在生效時間段之內時,或者當刷新任務不包括生效時間段時,判斷緩存目錄下的內容的保存時刻是否早于刷新任務的下發(fā)時刻。在一個實施例中,該裝置還包括:確定模塊,用于當重新啟動時,根據(jù)當前時間確定磁盤中保存的有效的 刷新任務;在目錄結構中加載有效的刷新任務。在一個實施例中,該裝置還包括:記錄模塊,用于記錄緩存目錄下刷新后的內容在磁盤中的第一偏移量;第七判斷模塊,用于每隔預設時長判斷磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量是否相同;刪除模塊,用于當磁盤執(zhí)行寫入操作時的當前偏移量與第一偏移量相同時,刪除緩存目錄下的刷新任務。在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flashRAM)。內存是計算機可讀介質的示例。計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitorymedia),如調制的數(shù)據(jù)信號和載波。如在說明書及權利要求當中使用了某些詞匯來指稱特定組件。本領域技術人員應可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準則。如在通篇說明書及權利要求當中所提及的“包含”為一開放式用語,故應解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏? 誤差范圍內,本領域技術人員能夠在一定誤差范圍內解決所述技術問題,基本達到所述技術效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實施本發(fā)明的較佳實施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護范圍當視所附權利要求所界定者為準。還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。上述說明示出并描述了本發(fā)明的若干優(yōu)選實施例,但如前所述,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構想范圍內,通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權利要求的保護范圍內。當前第1頁1 2 3 當前第1頁1 2 3 
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
孟连| 平和县| 阿克| 湄潭县| 博客| 上林县| 图木舒克市| 北海市| 千阳县| 罗甸县| 奉新县| 巨野县| 平凉市| 方城县| 碌曲县| 龙里县| 本溪| 荣昌县| 石狮市| 正宁县| 泾阳县| 类乌齐县| 敖汉旗| 个旧市| 富蕴县| 凉山| 安康市| 洱源县| 思南县| 锡林郭勒盟| 通榆县| 离岛区| 乌拉特中旗| 广昌县| 吉安市| 祁连县| 康马县| 卫辉市| 蕲春县| 文安县| 怀化市|