当前位置:首页 » 文件管理 » squid缓存更新

squid缓存更新

发布时间: 2022-04-27 04:46:33

‘壹’ 怎么设置squid不缓存任何网站文件或者特定的某个网站不缓存设置

因为共享VPS是通过SQUID缓存访问的,要一段时间后才会更新它,如果你想不缓存任何文件,可以按以下方式做: 将C:\squid\etc\目录下的squid.conf文件里的 cache_dir ufs C:\squid\var\cache 30000 16 256 改成 cache_dir ufs C:\squid\var\cache 30000 16 256 read-only 修改完后重启一下squid服务即可不缓存网站文件。

‘贰’ squid 如何缓存 视频文件

以下这些参数告诉Squid缓存的文件系统、位置和缓存策略: cache_dir ufs /var下面就一步一步来了解Squid是如何进行控制管理的。 通过IP地址来识别用户很,

‘叁’ 如何在linux上用squid搭建代理服务器

安装环境
操作系统: CentOS release 5.2 (Final)
Kernel: 2.6.18-92.el5PAE
软件列表
squid-2.6.STABLE22.tar.gz

软件存放位置
/data/software
安装过程
#/usr/sbin/groupadd squid -g 610
#/usr/sbin/useradd -u 610 -g squid squid
#mkdir /srv/scache
#chmod +w /var/vcache
#chown -R squid.squid /srv/scache
#mkdir /var/log/squid
#chmod +w /var/log/squid
#chown -R squid.squid /var/log/squid
#cd /data/software/pkg
#tar zxvf ../squid-2.6.STABLE22.tar.gz
#cd squid-2.6.STABLE22
#./configure --prefix=/usr/local/squid
#make && make install
编辑Squid配置文件
#vi /usr/local/squid/etc/squid.conf
-------------------------华丽的分割线,以下都是配置文件内容----------------------------
#定义acl项名称
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80
acl safeprotocol protocol HTTP
acl test dstdomain .test.com
acl CONNECT method CONNECT
#定义acl规则
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow safeprotocol Safe_ports test
http_access deny all
icp_access allow all
#squid监听端口
http_port 80 accel defaultsite=59.151.32.58 vhost
always_direct allow all
#后端服务器
cache_peer 10.10.10.8 parent 80 0 no-query originserver
hierarchy_stoplist cgi-bin ?
#内存cache大小
cache_mem 2048 MB
#内存cache中最大的object大小(超过这个值则不进入内存cache)
maximum_object_size_in_memory 8 KB
#内存cache的替换规则
memory_replacement_policy lru
#硬盘cache的替换规则
cache_replacement_policy lru
#磁盘cache目录(文件类型 cache目录路径 cache目录大小 二级目录个数 每个二级目录下的三级目录个数)
cache_dir ufs /srv/scache 40000 16 256
#磁盘cache中最小的object的大小(低于这个值则不缓存)
minimum_object_size 0 KB
#磁盘cache中最大的object的大小(超过这个值则不缓存)
maximum_object_size 2048 KB
cache_swap_low 90
cache_swap_high 95
#定义日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh
#记录相关日志
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
#日志rotate(24则后缀从.0到.23)
logfile_rotate 24
emulate_httpd_log on
#如果你的URL里面带有?,这两行一定要注销掉
#acl QUERY urlpath_regex cgi-bin \?
#cache deny QUERY
#配置自动更新(关于后面的三个值请参考Squid配置手册)
refresh_pattern -i \.jpg$ 60 80% 1440
refresh_pattern -i \.png$ 60 80% 1440
refresh_pattern -i \.gif$ 60 80% 1440
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
request_header_max_size 10 KB
reply_header_max_size 10 KB
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#相关timeout设置
forward_timeout 4 minutes
connect_timeout 3 minutes
peer_connect_timeout 30 seconds
read_timeout 15 minutes
request_timeout 1 minute
persistent_request_timeout 3 minutes
half_closed_clients off
pconn_timeout 1 minute
#cache管理员邮箱
cache_mgr [email protected]
cache_effective_user squid
cache_effective_group squid
#squid服务器的visible_hostname,此处指定的值显示在Squid响应的Header里面的X-Cache项中
visible_hostname squidserver
coremp_dir /var/log/squid/cache
------------------------华丽的分割线,以上都是配置文件内容-----------------------------
初始化squid缓存目录
#/usr/local/squid/sbin/squid -z
启动squid
#/usr/local/squid/sbin/squid -sD
配置完成以后,最重要最重要的一点,修改Squid服务器的hosts文件,将需要Cache的域名指向到后端的服务器IP上
相关命令
停止squid
/usr/local/squid/sbin/squid -k shutdown
启用新配置
/usr/local/squid/sbin/squid -k reconfig
通过crontab每小时截断/轮循日志
59 * * * * /usr/local/squid/sbin/squid -k rotate
查看squid运行状况
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
查看squid内存使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:mem
查看squid磁盘使用情况
/usr/local/squid/bin/squidclient -p 80 mgr:diskd
查看squid已缓存列表(小心使用,可能会导致crash)
/usr/local/squid/bin/squidclient -p 80 mgrbjects
强制更新某个url
/usr/local/squid/bin/squidclient -p 80 -m PURGE http://img.test.com/h/a.jpg
查看squid缓存到内存cache中并返回给访问用户的项
#cat /var/log/squid/access.log | grep TCP_MEM_HIT
查看squid缓存到磁盘cache中并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_HIT
查看没被squid缓存住,直接从原始服务器获取并返回给访问用户的项
#cat /usr/local/squid/var/logs/access.log | grep TCP_MISS

‘肆’ 如何清空squid指定页面的缓存

Linux系统中清除squid的缓存的方法 在运行Squid的linux或者Unix上清除代理缓存,这里用的是很粗略的方法,还有用squidclient,好的方法就是脚本,尤其当网站很多,url参数有复杂的情况下。 第一步:确定squid代理缓存的位置 复制代码 代码如下: ...

‘伍’ squid 缓存时间设置的疑问

根据你的描述
建议你修改为
refresh_pattern -i \.jpg$ 0 0% 1800
上述设置的目的是
不设最小缓存时间,发现图片被修改之后缓存立刻失效.
ignore-reload是指忽略客户端的刷新请求.

‘陆’ Servlet/JSP怎么控制页面缓存于squid中

近段时间在研究如何将Servlet/JSP中的伪动态页面缓存到Squid中来加速Web访问,在google上搜索"JSP在squid中的缓存"的信息,出来的信息比较少,后来差PHP,ASP的缓存相关资料及"深入体验java Web开发内幕——核心基础.pdf"和"Squid中文权威指南"中的相关章节,总算实现了这个目的(有需要这两本书的兄弟可以mail我 )。基于自己的一些理解和试验成果,记下来供以后参考。 HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务器端。本文讨论头信息中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中间缓存服务器中的缓存情况。
HTTP协议中关于缓存的信息头关键字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。
HTTP1.0中通过Pragma 控制页面缓存,可以设置:Pragma或no-cache。网上有非常多的文章说明如何控制不让浏览器或中间缓存服务器缓存页面,通常设置的值为no-cache,不过这个值不这么保险,通常还加上Expires置为0来达到目的。但是如我们刻意需要浏览器或缓存服务器缓存住我们的页面这个值则要设置为Pragma。
HTTP1.1中启用Cache-Control 来控制页面的缓存与否,这里介绍几个常用的参数:
no-cache,浏览器和缓存服务器都不应该缓存页面信息;
public,浏览器和缓存服务器都可以缓存页面信息;
no-store,请求和响应的信息都不应该被存储在对方的磁盘系统中;
must-revalidate,对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时;
max-age=xxx,s-max-age=xxx,替代Expires,表示应该在xxx秒后认为页面过时,后者指示代理服务器中缓存(通常称为共享缓存)的页面过期时间。(不过我试了好多次,这个选项一直没法实现,希望有人能补充!)
通常我们不需要缓存页面时设置该值为"no-cache,no-store,must-revalidate"(分三行代码设置);需要缓存页面信息时则设置该值为"public,max-age,s-max-age"。
Last-Modified只页面的最后生成时间,GMT格式;
Expires过时期限值,GMT格式,指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息;
上面两个值在JSP中设置值为字符型的GMT格式,无法生效,设置long类型才生效;
最后来看一下JSP或Servlet中如何设置缓存控制信息的代码:
Java代码
//本页面允许在浏览器端或缓存服务器中缓存,时限为10秒。
java.util.Date date = new java.util.Date();
response.setDateHeader("Last-Modified",date.getTime());
response.setDateHeader("Expires",date.getTime()+10000);

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "Pragma");
Java代码
//不允许浏览器端或缓存服务器缓存当前页面信息。
response.setHeader( "Pragma", "no-cache" );
response.setDateHeader("Expires", 0);

response.addHeader( "Cache-Control", "no-cache" );
response.addHeader( "Cache-Control", "no-store" );
response.addHeader( "Cache-Control", "must-revalidate" );
如果HTML页面信息中包括了Expires头信息,则其相关的缓存机制不再处理该页面,而是安装页面的缓存控制要求来处理。所以做了上述工作后,Squid无需做任何配置上的修改(指Squid的refresh_pattern指令不处理这些页面 )。
下面说一下Squid缓存一些静态资源的一些原理,Squid通过refresh_pattern指令来控制用户请求是否命中。 "Squid中文权威指南"文章中描述Squid的refresh_pattern指令一段文章读起来非常的拗口,就是LM_factor比率的算法,这个算法的概念翻译的比较模糊,网络上传来传去的,感觉都是搞不清楚,后来参考"OReilly - Squid The Definitive Guide.chm"英文原文,总算明白过来 。
英文原文应用代码
Responses that fall between the minimum and maximum are subject to Squid's
last-modified factor (LM-factor) algorithm. For such responses, Squid calculates
the response age and the LM-factor and compares it to the percent value. The
response age is simply the amount of time passed since the origin server
generated, or last validated, the response. The resource age is the difference
between the Last-Modified and Date headers. The LM-factor is the ratio of the
response age to the resource age.
LM-factor的定义是(response age)/(the resource age).
其中response age是指HTTP头信息中的age信息。
resource age是指HTTP头信息中的Date值减去Last-Modified的值转化为秒的值。
各位可以通过curl命令(Linux下自带命令)来参看一个资源返回回来的HTTP头详细信息,如下面这样:
curl -I
经过试验,这个算法是正确的,同时这里要提醒一下,特别是对一些HTML类型的资源,max值不要设置的太大,如果设置的太大的话,有可能修改的文档信息需要非常长的时间才能得到更新,因为LM-factor参数值是变化的,越来越大,分母变大的结果就是比率越来越小,总是小于我们设定的比率,导致需要max来控制页面刷新。

‘柒’ 如何清空squid中指定页面的缓存

Linux系统中清除squid的缓存的方法
在运行Squid的linux或者Unix上清除代理缓存,这里用的是很粗略的方法,还有用squidclient,好的方法就是脚本,尤其当网站很多,url参数有复杂的情况下。
第一步:确定squid代理缓存的位置

复制代码
代码如下:
#grep cache_dir /etc/squid/squid.conf //直接抓取squid的配置文件中缓存的目录的路径

输出如下,根据自己编译安装指定的目录不同,结果可能不同

复制代码
代码如下:
#cache_dir ufs /var/spool/squid 100 16 256

第二步:清空squid代理缓存

复制代码
代码如下:
# squid -k shutdown //关闭squid服务</p>< p># rm -rf /var/spool/squid/ //删除缓存目录

重建缓存目录

复制代码
代码如下:
# squid -z

输出如下:

复制代码
代码如下:
2013/08/24 04:24:19| Making directories in /var/spool/squid/00</p>< p>2013/08/24 04:24:19| Making directories in /var/spool/squid/01</p>< p>2013/08/24 04:24:19| Making directories in /var/spool/squid/02</p>< p>2013/08/24 04:24:20| Making directories in /var/spool/squid/03</p>< p>2013/08/24 04:24:20| Making directories in /var/spool/squid/04</p>< p>2013/08/24 04:24:20| Making directories in /var/spool/squid/05</p>< p>2013/08/24 04:24:20| Making directories in /var/spool/squid/06</p>< p>

重启Squid:

复制代码
代码如下:
#squid 或者 #service squid start

运行后输出:

复制代码
代码如下:
Starting squid: [ OK ]

第三步:确认Squid在运行

复制代码
代码如下:
# netstat -tulpn | grep :3128 // 查看squid使用的3128端口是否在使用

你也可以查看squid的access.log或者cache.log来检查squid的运行是否正常,命令如下:

复制代码
代码如下:
# tail -f /var/log/squid/access.log</p>< p># tail -f /var/log/squid/cache.log

‘捌’ 如何让Squid实现动态缓存

让动态内容也缓存?那就是强制缓存
在refresh_pattern里面加参数即可
具体的得根据实际情况确定
有以下参数
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-cache
ignore-private
ignore-auth
stale-while-revalidate=NN
ignore-stale-while-revalidate
max-stale=NN
negative-ttl=NN

‘玖’ 怎样解决squid无法重建缓存的问题

事实上我也这么干过
但是奇怪的是如果我把缓存的目录设置在 /var/spool/squid
这里的时候出来的提示就是 file exits
如果我把cache-dir 的目录设在 /squid 里时错误的提示就是
FATAL: Failed to make swap directory /squid/00: (13) Permission denied

需要说明的是 cache_effctive_user 和 cache_effctive_group都是 squid

而 /var/spool/squid 和 /squid 的目录属性都是777 都属于 squid.squid

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:433
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:744
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:147
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:240
java驼峰 发布:2025-02-02 09:13:26 浏览:652
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:538
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726