Squid Web Cache Wiki

Squid Web Cache 文档

🔗 IP 缓存和 FQDN 缓存

🔗 简介

IP 缓存是 Squid 的内置组件,提供主机名到 IP 地址的转换功能并管理相关的数据结构。效率方面的考虑要求有允许对这些映射进行非阻塞访问的机制。IP 缓存通常不会在请求时阻塞,除非是期望发生的特殊情况(见下文)。

🔗 数据结构

用于存储名称-地址映射的数据结构是一个小型哈希表 (static hash_table *ip_table),其中包含 ipcache_entry 类型的结构,其最有趣的成员是

    struct _ipcache_entry {
            char *name;
            time_t lastref;
            ipcache_addrs addrs;
            struct _ip_pending *pending_head;
            char *error_message;
            unsigned char locks;
            ipcache_status_t status:3;
    }

🔗 外部概述

主要功能通过调用以下函数提供:

🔗 内部操作

在内部,执行流程如下:在未命中时,ipcache_getnbhostbyname 检查该名称的请求是否已挂起,如果为真,则使用 ipcacheAddNew 创建一个新条目,并将 IP_PENDING 标志设置为 true。然后调用 ipcacheAddPending 将请求与数据和处理程序一起添加到队列中。否则,将调用 ipcache_dnsDispatch() 直接创建 DNS 查询,或者在所有 DNS 端口都空闲时调用 ipcacheEnqueue()ipcache_call_pending() 会定期调用以遍历挂起列表并调用处理程序。LRU 清理通过 ipcache_purgelru() 根据 ipcache_high 阈值执行。

导航:网站搜索网站页面分类🔼 向上