小阿轩yx-Apache 网页优化

2024-06-15 17:28

本文主要是介绍小阿轩yx-Apache 网页优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小阿轩yx-Apache 网页优化

网页压缩与缓存

对Apache服务器优化配置

  • 能让 Apache 发挥出更好的性能

相反,配置糟糕

  • Apache可能无法正常服务

网页压缩

网站的访问速度是由多个因素所共同决定的

包括应用程序

  • 响应速度
  • 网络带宽
  • 服务器性能
  • 与客户端之间的网络传输速度等等

(注:其中最重要的一个因素是 Apache本身的响应速度)

网站性能需要着手进行处理

  • 尽可能的提升 Apache 的执行速度
  • 可以使用网页压缩提升应用程序的速度

更重要的好处

  • 它完全不需要任何的成本

(注:只不过是会让服务器 CPU 占用率稍微提升一两个百分点或者更少)

gzip 介绍
  • 是一种流行的文件压缩算法
  • 目前应用非常广泛,尤其是在 Linux 平台

好处

  • 大约可以减少 70%以上的文件大小
  • 经过压缩后,实际上降低了网络传输的字节数

(注:最明显的好处就是可以加快网页加载的速度)

网页加载速度加快的好处

  • 节省流量
  • 改善用户的浏览体验外
  • 另一个潜在的好处是 gzip 与搜索引擎的抓取工具有着更好的关系
HTTP 压缩的过程

Web 服务器接收到浏览器的 HTTP 请求后,检查浏览器是否支持 HTTP 压缩(Accept-Encoding 信息)。

  • 如果浏览器支持 HTTP 压缩,Web 服务器检查请求文件的后缀名。
  • 如果请求文件是 HTML、CSS 等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件。
  • 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件。
  • 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件。
  • 如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
Apache 的压缩模块

Apache 1.x系列

  • 没有内建网页压缩技术
  • 使用的是额外的第三方 mod gzip 模块来执行压缩

Apache 2.x

  • 官方在开发的时候,就把网页压缩考虑进去
  • 内建了 mod deflate 这个模块,用以取代 mod_gzip

(注:两者都是使用的 gzip 压缩算法,它们的运作原理是类似的

区别
  • mod deflate 压缩速度略快
  • mod gzip 的压缩比略高

一般默认情况下

  • mod_gzip会比 mod deflate 多出 4%~6%的压缩量

一般来说

  • mod_gzip 对服务器 CPU 的占用要高一些
  • mod deflate 是专门为确保服务器的性能而使用的一个压缩模块
  • mod deflate 需要较少的资源来压缩文件

高流量的服务器

  • 使用 mod deflate 可能会比 mod_gzip 加载速度更快

简而言之

  • 如果网站访问量较小,想要加快网页的加载速度,就使用mod_gzip。虽然会额外耗费一些服务器资源,但也是值得的。
  • 如果网站访问量较大,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用mod_deflate 将会是更好的选择。

Apache 2.4.25 版本中 mod deflate 模块

可使用 DeflateCompressionLevel 指令设置压缩级别

  • 该指令的值可为1(压缩速度最快,最低的压缩质量)至9(最慢的压缩速度,压缩率最高)之间的整数
  • 其默认值为6(压缩速度和压缩质量较为平衡的值)
  • 这个简单的变化更是使得 mod_deflate 可以轻松媲美 mod_gzip 的压缩
mod_deflate 模块

检查是否安装 mod_deflate 模块

[root@www ~]# apachectl -t -D DUMP_MODULES

安装时启用此功能

# 安装时编译 Apache 添加 mod_deflate 模块
[root@apache ~]# tar zxf httpd-2.4.25.tar.gz
[root@apache ~]# cd httpd-2.4.25/ 
[root@apache ttpd-2.4.25]#./configure \
--prefix=/usr/local/httpd \
--enable-so --enable-rewrite \
--enable-charset-lite \
--enable-cgi --enable-deflate
[root@apache httpd-2.4.25]#make && make install 
[root@apache httpd-2.4.25]#ln -s /usr/local/httpd/bin/* /usr/local/bin

配置 mod_deflate 模块启用 

[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.confLoadModule deflate_module modules/mod_deflate.so<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>

检查安装情况

[root@apache~# apachectl -t
Syntax OK
[root@apache~l# apachectl restart
[root@apache ~]# apachectl -t -D DUMP MODULES | grep "deflate"deflate module (shared)

 测试 mod_deflate 压缩模块是否生效 

http://192.168.10.101/test1.php

(注意:查看前面测试php的页面按F12可以打开)

网页缓存

  • 将一部分经常不会改变和变动很少的页面缓存
  • 下次浏览器再次访问这些页面时
  • 不需要再次去下载这些页面,从而提高了用户的访问速度

Apache 的 mod expires 模块会自动生成页面头部信息中

  • Expires 标签
  • Cache-Control标签

客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求

从而降低客户端的访问频率和次数

达到减少不必要的流量和增加访问速度的目的

(注:配置 mod expires 模块的步骤与 mod deflate 模块相似)

配置 mod_expires 模块启用

[root@apache~]# vim /usr/local/httpd/conf/httpd.conf##去掉前面的注释
LoadModule expires_module modules/mod_expires.so<IfModule mod_expires.c>
ExpiresActive On 
ExpiresDefault "access plus 60 seconds"
</IfModule>

(注:ExpiresActive On:打开网页缓存功能

ExpiresDefault "access plus 60 seconds" :设置缓存60秒)

检测 httpd.conf 语法

[root@www ~]# apachectl -t

重启 Apache 服务

[root@www ~]# apachectl restart

测试mod_expires 模块,访问网站

http://192.168.10.101/test1.php

(注:查看前面测试php的页面)

隐藏版本信息

软件漏洞信息和特定版本是相关的。软件版本号对攻击者是很有价值的

修改主配置文件

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
# 去掉前面的注释符
Include conf/extra/httpd-default.conf

修改httpd-default.conf文件

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-default.confServerTokens Prod

重启并测试

# 查看响应头,Server字段只显示Apache,不再显示版本信息
[root@www ~]# apachectl restart

Apache 防盗链

没有任何资源的网站利用了其他网站的资源来展示给浏览者

好处

  • 提高了自己的访问量
  • 而大部分浏览者又不会很容易地发现

一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接

  • 一方面损害了原网站的合法利益
  • 另一方面又加重了服务器的负担

HTTP 标准协议中有专门的 Referer 字段记录,它的作用如下

  • 可以追溯上一个入站地址是什么。
  • 对于资源文件,可以跟踪到包含显示它的网页地址是什么,因此所有防盗链方法都是基于这个 Referer 字段。

配置防盗链

实验环境

将第一台服务器直接克隆一个,并修改IP地址为192.168.10.201

修改两台服务器的主机名

服务器1

[root@www ~]# hostnamectl set-hostname apache1
[root@www ~]# bash

服务器2

[root@www ~]# hostnamectl set-hostname apache2
[root@www ~]# bash

修改每个主机的hosts文件

192.168.10.101 www.benet.com
192.168.10.102 www.accp.com

编写带有图片的网页(原图网站)

将图片文logo.jpg件拷贝到apache的网站根目录下并修改网页文件

[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It work! </h1>
<img src="logo.jpg"/>
</body>
</html>

用另一台apache服务器盗链(盗图网站)

www.accp.com 服务器,修改 index.html 文件,加入盗取图片链接

[root@apache2 ~]# vim /usr/local/httpd/htdocs/index.html 
<html>
<body>
<h1>dao lian </h1>
<img src="http://www.benet.com/logo.jpg" />
</body>
</html>

客户端测试访问,按F12查看

鼠标右键点选图片,选择“查看图像信息”,可以看到图片的网址是www.kxr.com/logo.jpg 

模拟盗取图片链接 

修改index.html文件加入盗图链接

[root@apache2 htdocs]# vim index.html
<html><body><h1>lt daotu
//盗取链接图片
<img src="http://www.kxr.com/ogo.jpg" />
</h1></body></html>

鼠标右键点选图片,选择“查看图像信息”,可以看到图片的网址是www.kxr.com/logo.jpg 

 在火狐浏览器右键选择“査看元素"可以看到先对 www.dt.com 请求,然后对 www.kxr.com/logo.jp请求,说明盗链成功

为Apache1 防盗链设置

配置 mod_rewrite 模块启用

[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf#去掉前面的注释
LoadModule rewrite_module modules/mod_rewrite.so		#修改此网站访问参数
<Directory "/usr/local/httpd/htdocs">AllowOverride NoneRewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://benet.com$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png
Require all granted
</Directory>

检测 httpd.conf 语法 

[root@apache conf ~]# apache -t

重启服务 

[root@apache1 ~]# systemctl restart httpd

(注:AllowOverride ALL)

 mod rewrite 模块主要的功能

  • 实现 URL 的跳转
  • 它的正则表达式是基于 Per语言

可基于的两种方式

  • 服务器级(httpd.conf)
  • 目录级的(.htaccess)

基于服务器级的(httpd.conf)有两种方法

  • 一种是在 httpd.conf的全局下直接利用RewriteEngine on 来打开 rewrite 功能
  • 另一种是在局部里利用 RewriteEngine on 来打开rewrite 功能

基于目录级的(.htaccess)

  • 要注意一点就是必须打开此目录的 FollowSymLinks 属性且在.htaccess 里要声明 RewriteEngine on。

开启rewrite 功能后

  • 需要设置 RewriteCond 指令

它定义了匹配规则

  • 如果符合某个或某几个条件,则执行 RewriteCond 下面紧邻的 RewriteRule 指令。
  • 如果不匹配,则后面的规则不再匹配,RewriteRule 则定义需要重定向到的路径。

RewriteEngine On打开了重写引擎

根据匹配规则分析“RewriteCond %{HTTP REFERER} !^http://www.kxr.com/.*$ [NC]”含义

  • “%{HTTP REFERER}”:表示从哪个 URL 来产生请求。
  • “!^”: 表示不是以后面的字符串开头。
  • “http:/www.kxr.com”,是本网站的路径,按整个字符串匹配。
  • “.*$ ”表示以任意字符结尾。
  • “NC"表示不区分大小写字母。

(注:最后的规则是不以“htp://www.kxr.com”为路径,即不是本网站进行访问,后面是任意字符都可以匹配成功)

如果请求路径被匹配,执行重定

“RewriteRule .*.(gifljpglswf)$ http://www.kxr.com/error.png”

(注:RewriteRule中不要添加png的格式,否则客户端看不到error图片)

  • “."表示匹配一个字符。
  • “*”表示匹配0到多个字符,与".”合起来的意思是匹配1到多个字符,实际上可以只用“+“表示,这里是为了演示使用方式。
  • “."在这里表示的是转义字符“”,因为"."在指令中是属于规则字符,有相应的含义如果需要匹配,需要在前面加个“”其它规则字符如果需要匹配,也做同样处理。
  • “(gifljpg|swf)”表示匹配“gif”、"jpg”、“sw"任意一个,“$”表示结束。最后的规则是以“.gif”、“jpg”、“.swf结尾,前面是1到多个字符的字符串,也就是匹配图片类型的文件。
  • “http:/kwww.kxr.com/error.png”:表示转发到这个路径

(注:整个配置的含义是本网站以外的站点访问本站的图片文件时,显示 error.png 这个图片) 

检测 httpd.conf 语法

[root@apache1 ~]# apachectl -t

复制 error.png 这个图片到benet站点的工作目录 /usr/local/httpd/htdocs,再次访问网站 

可以看到防盗链图片已经工作,其它网站盗链,返回给它禁止盗链的图片。使用火狐浏览器可以看到 logo.jpg 的 htp 状态码是 302,它表示重定向,再次说明防盗链配置成功。 

 小阿轩yx-Apache 网页优化

这篇关于小阿轩yx-Apache 网页优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064104

相关文章

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏