1, cache确认保证squid不对用户返回过时数据。在重复使用缓存对象时,squid经常从原始服务器确认它。假如服务器指示squid的拷贝仍然有效,数据就发送出去。否则,squid升级它的缓存拷贝,并且转发给客户。

2, echo "1024 40000" > /proc/sys/net/ipv4/ip_local_port_range

3, ./configure --localstatedir=/bigdisk/var

4, aufs存储模块是squid中唯一需要使用线程的部分。

5, 排除策略是squid需要腾出空间给新的cache目标时,用以排除旧目标的机制。squid-2.5支持3个排除策略:最少近期使用(LRU),贪婪对偶大小(GDS),最少经常使用(LFU)。然而,因为一些理由,./configure选项使指定的替代策略和需要执行它们的基本数据结构之间的差别模糊化。LRU是默认的,它以双链表数据结构执行。GDS和LFU使用堆栈的数据结构。

为了使用GDS或LFU策略,你指定:

% ./configure --enable-removal-policies=heap

然后你在squid的配置文件里选择使用GDS或LFU。假如你想重新使用LRU,那么指定:

% ./configure --enable-removal-policies=heap,lru

6, unix提供两个相似的函数用以在I/O事件里扫描开放文件描述符:select()和poll().

7, 头文件通常在/usr/include目录,而库文件在/usr/lib目录。Linux的流行RPM系统允许它去升级其中之一,但并非另一个。假如库文件基于不同的头文件,squid不能编译。

8, make的先进功能之一就是它仅仅编译改变了的文件。但有时候make不能理解错综复杂的依赖关系,它没有完整的重编译所需文件。为了安全起见,通常建议你去重编译所有文件。最好的方法是在开始编译之前清除源代码树:

%make clean

%make

9, 有时候你可能发现有必要重新运行./configure。例如,假如你调整了内核参数,你必须再次运行./configure以使它能发现新设置。当你阅读本书时,你也发现你必须使用./configure选项来激活所需的功能。

以相同的选项重运行./configure,使用如下命令:

%config.status --recheck

另一个技术是`touch config.status`文件,它更新了该文件的时间戳。这导致make在编译源代码之前,重新运行./configure脚本:

% touch config.status
      
% make

如果增加或删除./configure选项,你必须重新敲入完整的命令行。假如你记不住以前的选项,请查看config.status文件的顶部。例如:

% head config.status
    
#! /bin/sh

# Generated automatically by configure.

# Run this file to recreate the current configuration.

# This directory was configured as follows,

# on host foo.life-gone-hazy.com:

#

# ./configure  --enable-storeio=ufs,diskd --enable-carp \

#   --enable-auth-modules=NCSA

# Compiler output produced by configure, useful for debugging

# configure, is in ./config.log if it exists.

在运行./configure之后,你必须再次编译和安装squid。安全起见,建议先运行make clean:

%make clean
      
%make

请回想一下,./configure会缓存它在你系统中发现的东西。在这样的形式下,你可能想清除这些缓存,从头开始编译过程。假如喜欢,你可以简单的删除config.cache文件。然后,下一次./configure运行时,它不会使用以前的数值。你也能恢复squid源代码树到它的configure之前的状态,使用如下命令:

%make distclean

这将删除所有的目标文件和其他被./configure和make程序产生的文件。

10, cache_effective_user告诉squid,在执行完需要特别权限的任务后,变成哪个用户.

11,