apache-8-长链接、压缩、缓存

八 长连接

长连接指的是三次握手以后不会立即断开 可以避免过多的三次握手四次断开的流程 减少TCP队列,长连接可以存在 但是时间不能太长 否则由于长连接的存在APACHE的进程就会一直开着,访问的人越多,资源的消耗就会越大,长连接的时长根据页面的大小调节,比如说响应一次页面需要5秒时间 那么长连接时间就是5秒 基本上线上环境长连接的时长5秒就够了,即能够保证资源的快速回收,也能避免攻击,CentOS8中的apache默认是开启长连接功能的

启动httpd服务,使用tcpdump抓包,并在测试机上访问,用wireshark查看,可以明显看到keep-alive字样





长连接的功能默认是开启的,超时时间是5秒,最多处理100个请求,我们可以通过三个参数来调整

KeepAlive       On/Off  开启/关闭长连接
MaxKeepAliveRequests  100  每个长连接处理的请求数量
KeepAliveTimeout        30  长连接超时时间

[root@manage01 html]# vim /etc/httpd/conf/httpd.conf 
MaxKeepAliveRequests    300
KeepAliveTimeout        30

[root@manage01 html]# systemctl restart httpd

访问测试并抓包查看可以发现



九 压缩

所谓的压缩就是指将网站的数据进行压缩,这样可以降低带宽占用,提升页面访问速度,当开启压缩功能之后,服务器会将需要传输的数据压缩后再传输,客户端浏览器在接收到数据的时候先解压再展示,但是使用压缩功能的时候有两个注意事项,第一,双方要都支持压缩,否则像一些老的浏览器,服务器把数据压缩后,反而打不开;第二,不是所有的数据都要压缩,像图片,音频,视频这些文件就不需要压缩,因为本身就是高压文件,再次压缩反而会由于算法的因素,导致数据变大。

开启压缩功能

step1 确认模块是否加载

[root@manage01 httpd]# grep deflate /etc/httpd/conf.modules.d/00-base.conf 
LoadModule deflate_module modules/mod_deflate.so

step2 准备测试页面

[root@manage01 httpd]# cp /etc/passwd /var/www/html/
#在测试机打开浏览器,并且打开开发者工具,访问 ip/passwd测试



content-length:内容长度

accept-encoding:支持的压缩类型

[root@manage01 httpd]# ll /var/www/html/passwd 
-rw-r--r-- 1 root root 2537 3月  27 02:53 /var/www/html/passwd

step3 调整apache配置文件开启压缩功能

[root@manage01 httpd]# vim /etc/httpd/conf/httpd.conf 
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
#AddOutputFilterByType  用来定义什么类型的文件压缩,支持的类型可以在/etc/mime.types 文件中查看
#SetEnvIfNoCase 定义图片类型的文件不压缩

step4 使用测试主机访问测试



十 缓存

为什么需要浏览器缓存

 我们知道在客户端浏览器和服务器建立连接时需要消耗时间,而大的响应需要在客户端和服务器之间进行多次往返通信才能获得完整的响应,这拖延了浏览器可以使用和处理内容的时间。这就增加了访问服务器的数据和资源的成本,因此利用浏览器的缓存机制重用以前获取的数据就变成了性能优化时需要考虑的事情。为每个资源指定一个明确的缓存策略,用以定义资源是否可以缓存,由谁来缓存,可以缓存多久,并且在缓存时间到期时如何有效地重新验证。这样可以提升用户体验并加快访问速度。

web缓存的种类

数据库缓存

  我们可能听说过memcached,它就是一种数据库层面的缓存方案。数据库缓存是指,当web应用的关系比较复杂,数据库中的表很多的时候,如果频繁进行数据库查询,很容易导致数据库不堪重荷。为了提供查询的性能,将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返回,提供响应效率。

CDN缓存

  CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。通常情况下,浏览器先向CDN网关发起Web请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。从浏览器角度来看,整个CDN就是一个源服务器,从这个层面来说,浏览器和服务器之间的缓存机制,在这种架构下同样适用。

代理服务器缓存

  代理服务器是浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web请求,经过处理后(比如权限验证,缓存匹配等),再将请求转发到源服务器。代理服务器缓存的运作原理跟浏览器的运作原理差不多,只是规模更大。

浏览器缓存

  每个浏览器都实现了 HTTP 缓存,我们通过浏览器使用HTTP协议与服务器交互的时候,浏览器就会根据一套与服务器约定的规则进行缓存工作。

应用层缓存

  应用层缓存是指我们在代码层面上做的缓存。通过代码逻辑,把曾经请求过的数据或资源等,缓存起来,再次需要数据时通过逻辑上的处理选择可用的缓存的数据。

设置缓存功能

step1 检查是否加载相关模块

[root@manage01 ~]# cd /etc/httpd/conf.modules.d/
[root@manage01 conf.modules.d]# ls
00-base.conf  00-dav.conf  00-lua.conf  00-mpm.conf  00-optional.conf  00-proxy.conf  00-systemd.conf  01-cgi.conf  10-h2.conf  10-proxy_h2.conf  README
[root@manage01 conf.modules.d]# grep expires *.conf
00-base.conf:LoadModule expires_module modules/mod_expires.so

step2 修改httpd.conf

[root@manage01 conf.modules.d]# vim /etc/httpd/conf/httpd.conf
<IfModule expires_module>
ExpiresActive On    #开启缓存功能
ExpiresByType text/html A2592000    #html文件缓存2592000/3600/24=1月
ExpiresByType image/jpg A2592000    #图片文件缓存2592000/3600/24=1月
ExpiresByType image/jpeg A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/ico A2592000
ExpiresByType image/x-icon A2592000
ExpiresDefault "access plus 30 days"    #默认缓存1月
</IfModule>



#其中时间表示形式
ExpiresDefault "access/ plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"


起始时间可以是access(访问)、now (等价于'access')、modification(修改)
时间的单位可以是years、months、weeks、days、hours、minutes、seconds

#######还可以使用另外一种表示方式
ExpiresByType image/gif A2592000    # GIF有效期为1个月
ExpiresByType text/html M604800 # HTML文档的有效期是最后修改时刻后的一星期
#A=access
#M=modification

steup3 重启服务

[root@manage01 conf.modules.d]# systemctl restart httpd

step4 测试

服务端使用tcpdump抓包,客户端使用浏览器访问页面

[root@manage01 ~]# tcpdump -nn -vvv -s 1500 -w /tmp/httpd host 192.168.98.200 and port 80 -i ens33
[root@manage01 ~]# wireshark /tmp/httpd 


总结

什么是长连接

长连接功能的使用

压缩的优势及要求

压缩功能的使用和验证

缓存的作用

web缓存的种类

如何设置缓存功能

如何查看缓存设置是否成功

重点:长连接的作用,长连接的相关设置,压缩的优势和注意事项,压缩功能如何实现,压缩功能如何验证,缓存的种类、设置方法、验证

难点:如何查看长连接设置是否生效,长连接的额外参数,记住压缩需要用到的模块名称,记住压缩功能需要用到的相关字段,掌握压缩功能的验证方式,理解缓存设置相关字段的含义,记住验证方式和查看方式

3分钟了解计算机发展历史-组团学

举报
评论 0