中小型web网站架构初探之四:前端SQUID高速WEB缓存服务器的搭建

简介: SQUID+GZIP+IIS的完美结合!SQUID如果不能搞定GZIP,那么肯定流量虚高的,所以SQUID高速WEB缓存服务器的关键问题在于搞定GZIP。

SQUID+GZIP+IIS的完美结合!

SQUID如果不能搞定GZIP,那么肯定流量虚高的,所以SQUID高速WEB缓存服务器的关键问题在于搞定GZIP。

以下是实例过程

为了原生支持GZIP,4899网通WEB缓存服务器用了 SQUID3.0 FOR WINDOWS 

下载地址 http://www.acmeconsulting.it/SquidNT.html

1.建立SQUID缓存目录在 d:/newcache 给user用户以完全控制权限

2. 把squid压缩包解压到C盘目录,进入squid/etc目录,复制一分,然后重命名把原文件的.default全去掉

3.开始编辑 squid.conf

a.我们对外用80端口,所以用批量替换 3128 替换为 80
b.搜索 http_port 80 后面加上 vhost 变成

程序代码 程序代码

http_port 80 vhost
icp_port 3130
cache_mem 433M (取内存的1/3+100M)
cache_dir aufs d:/newcache 12000 16 256
maximum_object_size 10240 KB
maximum_object_size_in_memory 6000 KB
memory_pools on
memory_pools_limit 100 MB
cache_swap_high 98%
cache_swap_low 90%
error_directory c:/squid/share/errors/Simplify_Chinese
hosts_file c:/windows/system32/drivers/etc/hosts
cache_peer www.4899.com parent 80 0 no-query originserver no-digest name=cache0
cache_peer 125.46.39.22 parent 8080 0 no-query originserver no-digest name=cache1
cache_peer 4899-img.mfcdn.com parent 8080 0 no-query originserver no-digest name=cache2
cache_peer 4899-flash.mfcdn.com parent 8080 0 no-query originserver no-digest name=cache3
cache_peer_domain cache0 www.4899.com 4899wt.4899.com
cache_peer_domain cache1 125.46.39.22
cache_peer_domain cache2 4899-img.mfcdn.com
cache_peer_domain cache3 4899-flash.mfcdn.com
#配置本机squid允许接受访问的域名,请注意name的对应
acl Safe_ports port 80
acl Safe_ports port 81
acl Safe_ports port 3130
http_access allow all
#允许以上端口的代理



期间找到 http_access deny all #掉他

4.建立缓存目录,修改hosts
通过cmd进入 c:/squid/sbin
squid -z
将建好缓存
squid -i
将squid注册为系统服务,在服务里,找到他,设置自动启动

进入 c:/windows/system32/drivers/etc/ 编辑 hots文件,将 www.4899.com 指向源服务器电信ip
61.152.249.77 www.4899.com

5.启动squid服务,在服务中启动他

6.为了使squid能响应iis的GZIP,要在源服务器做一定修改

a.经典的IIS启用GZIP的教程如下:

复制 C:/Windows/system32/inetsrv/metabase.xml 到另外的备份文件夹中.

在开始菜单中启动 Internet 信息服务(IIS)管理器,右键点击“网站”属性,打开“服务”选项卡,勾选“HTTP 压缩”的两个选项。“临时目录”和“临时目录最大容量”可根据需要自行设置。设置完成后点击确定。

右键点击“网站”下方的 “Web服务扩展”,添加一个新的Web服务扩展,扩展名填写为“HTTP Compression”或其他,都可以。“要求的文件”添加:c:/windows/system32/inetsrv/gzip.dll ,并勾选“设置扩展状态为允许”,完成后点击确定。

在开始菜单中运行 notepad C:/Windows/system32/inetsrv/metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份。

搜索并找到 metabase.xml 文件中的 <IIsCompressionScheme    片段中的 HcScriptFileExtensions,依照原有文件的格式添加你希望进行 HTTP 压缩的文件扩展名,静态文件HcFileExtensions可添加 JS,CSS 等; 动态文件 HcScriptFileExtensions 可添加"ASPX""ASMX",如下:

<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
    HcCreateFlags="0"
    HcDoDynamic

Compression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="FALSE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
     html
     js
     css
     txt"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
     aspx
     asmx
     dll
     exe"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
     html
     js
     css
     txt"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
     aspx
     asmx
     dll
     exe"
>
</IIsCompressionScheme>

注意“Compression/deflate”和“Compression/gzip”两个片段都需要修改。动态压缩等级,HcDynamicCompressionLevel 建议设置为“9”
如果你的服务器上某一个Web站点不希望启用 IIS 压缩,请运行以下脚本:

cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoStaticCompression False
cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoDynamicCompression False

如果想增加启用 HTTP 压缩的文件类型,请运行以下脚本:

"" 中为文件扩展名,别忘了把原有的扩展名加上。

静态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"

动态文件压缩:

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "aspx" "asmx" "dll" "exe" "php"

将site#替换为该 Web 站点的 ID。Web 站点的 ID 是什么到“日志记录属性”中看一下日志记录的“日志文件名”前面的路径就知道了。

运行以上脚本前务必备份,运行后再次执行“IISReset”使生效.

现在看一下 HTTP 压缩后的效果吧:

测试 HTTP 压缩效果的工具:

http://www.pipeboost.com/

b.做适当修改,以适应squid缓存需要

在开始菜单中运行 notepad C:/Windows/system32/inetsrv/metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份

HcNoCompressionForHttp10="TRUE"
HcNoCompressionForProxies="TRUE"

上面这俩改成FALSE

然后查找 HcDoDynamicCompression 也要改成 FALSE,这实际上是关闭了动态加速,以4899小游戏网站配置SQUID+GZIP的经验,HcDoDynamicCompression="TRUE"时,SQUID缓存动态文件会出现问题,关了就好了。

目录
相关文章
|
移动开发 数据挖掘 开发者
服务器发送事件(SSE)在现代Web开发中的关键作用
服务器发送事件(SSE)是HTML5标准协议,用于服务器主动向客户端推送实时数据,适合单向通信场景。相比WebSocket,SSE更简洁高效,基于HTTP协议,具备自动重连、事件驱动等特性。常见应用场景包括实时通知、新闻推送、数据分析等。通过Apipost等工具可轻松调试SSE,助力开发者构建高效实时Web应用。示例中,电商平台利用SSE实现秒杀活动通知,显著减少延迟并简化架构。掌握SSE技术,能大幅提升用户体验与开发效率。
|
8月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1497 3
|
存储 缓存 NoSQL
分布式系统架构8:分布式缓存
本文介绍了分布式缓存的理论知识及Redis集群的应用,探讨了AP与CP的区别,Redis作为AP系统具备高性能和高可用性但不保证强一致性。文章还讲解了透明多级缓存(TMC)的概念及其优缺点,并详细分析了memcached和Redis的分布式实现方案。此外,针对缓存穿透、击穿、雪崩和污染等常见问题提供了应对策略,强调了Cache Aside模式在解决数据一致性方面的作用。最后指出,面试中关于缓存的问题多围绕Redis展开,建议深入学习相关知识点。
889 8
|
缓存 监控 定位技术
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
存储 缓存 安全
分布式系统架构7:本地缓存
这是小卷关于分布式系统架构学习的第10篇文章,主要介绍本地缓存的基础理论。文章分析了引入缓存的利弊,解释了缓存对CPU和I/O压力的缓解作用,并讨论了缓存的吞吐量、命中率、淘汰策略等属性。同时,对比了几种常见的本地缓存工具(如ConcurrentHashMap、Ehcache、Guava Cache和Caffeine),详细介绍了它们的访问控制、淘汰策略及扩展功能。
354 6
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
391 3
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
281 3
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
236 3