unbound可以透過配置檔案中的cache-max-ttl
來設定快取的最大快取時間,這個會儲存MAX_TTL
全域性變數(預設值是10天)。
unbound在處理遞迴響應時的呼叫鏈是comm_point_udp_callback -> outnet_udp_cb -> serviced_udp_callback -> serviced_callbacks -> worker_handle_service_reply -> mesh_report_reply -> mesh_run -> iter_operate -> process_response
,在process_response
方法中,會先對響應包qstate->reply->c->buffer
呼叫parse_packet
方法進行解析,接著呼叫dns_alloc_msg
方法對解析出來資料進一步加工得到struct dns_msg *
資料。在dns_alloc_msg
方法內部就會對dns_msg->rep->ttl
設定為MAX_TTL
,然後再根據rr的ttl來跟dns_msg->rep->ttl
比較選出一個最小的ttl設定到dns_msg->rep->ttl
上(這裡會保證rr的ttl不小於MIN_TTL,無rr記錄的預設ttl是5s)。
關鍵方法:parse_copy_decompress
、rdata_copy
。
走到processQueryResponse
方法去處理響應結果,在呼叫iter_dns_store
方法快取結果時,內部判斷ttl為0就不快取了。
關鍵方法:dns_cache_store_msg
。
unbound中快取時間邏輯
相關文章
- 3.2.2的Model的快取邏輯快取
- 經典示例-在快樂中鍛鍊程式邏輯
- Redis快取切面,防止Redis當機影響正常業務邏輯Redis快取
- 倒數計時快取時間問題總結快取
- 解決ajax中ie快取問題(手動新增時間戳)快取時間戳
- lvm收縮邏輯卷空間LVM
- Asp.Net Core中利用過濾器控制Nginx的快取時間ASP.NET過濾器Nginx快取
- localstorage實現帶過期時間的快取功能快取
- 如何在SPRING中同時管理本地快取和分散式快取? - techblogSpring快取分散式
- Hystrix降級邏輯中如何獲取觸發的異常
- let const快取for迴圈的中間變數快取變數
- (3)計數器&時序邏輯
- SAP ABAP 特性相關表取數邏輯
- Python中的邏輯表示式Python
- JS 中的邏輯運算子JS
- 從巢狀結構中取值時如何編寫兜底邏輯巢狀
- 分散式系統:Lamport邏輯時鐘分散式LAMP
- 優雅的快取解決方案--設定過期時間快取
- 查詢時若時間為空,開始時間取今天的零點,結束時間取當前時間
- 獲取時間戳,幾個時間點的時間戳時間戳
- 邏輯題
- iOS 直播間送禮物邏輯(禮物連擊)iOS
- Glide中的快取IDE快取
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- Centos8中遷移邏輯卷CentOS
- 中國經濟的數字邏輯
- JDBC中PreparedStatement介面的執行邏輯JDBC
- Java 獲取本地時間與網路時間Java
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- unbound原始碼分析原始碼
- (9)邏輯綜合新增約束(時序、DRC)
- 獲取系統時間
- php 獲取時間差PHP
- 獲取當前時間
- lvm 擴充邏輯卷空間(linux的磁碟擴容)LVMLinux
- LVM邏輯卷線上動態擴容磁碟空間LVM
- 快取穿透、快取擊穿、快取雪崩、快取預熱快取穿透
- 邏輯運算子