Apache2下的网站启用Gzip(Deflate)压缩

本文介绍如何在Apache服务器上安装和配置Deflate模块,实现网页内容的压缩,提高加载速度。文中详细讲解了安装过程中的注意事项及常见错误解决方法。

一般默认没有装 Deflate ,最直接的方法就是重装 Apache ,在原来的配置文件后加上 --enable-deflate --enable-headers
如果不想重装,就单独编译, mod_deflate.c 在源文件目录的 modules/filters 下, mod_hearders.c 则在 modules/metadata 目录下。如果用 apxs -i -a -c 的方法不行,请参考下面的办法,以安装 mod_headers 为例。

cd modules/metadata/
apxs -i -a -c mod_headers.c
Warning!  dlname not found in /usr/local/apache2.2.0/modules/mod_headers.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2.2.0/modules/mod_headers.so
chmod:
无法访问 ‘/usr/local/apache2.2.0/modules/mod_headers.so’: 没有那个文件或目录
apxs:Error: Command failed with rc=65536


gcc -shared -o mod_headers.so mod_headers.o
cp mod_headers.so /usr/local/apache2.2.0/modules
/usr/local/apache2.2.0/bin/apxs -i -a -c mod_headers.c
Warning!  dlname not found in /usr/local/apache2.2.0/modules/mod_headers.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2.2.0/modules/mod_headers.so
[activating module `headers' in /usr/local/apache2.2.0/conf/httpd.conf]

 

如安装mod_deflate.c失败,提示zlib未找到时,可用yum install zlib-devel.i386先安装zlib后再试。

安装成功了。

装完后,其在 conf/httpd.conf 中加了如下两句:
LoadModule deflate_module     modules/mod_deflate.so
LoadModule headers_module     modules/mod_headers.so

其实安装 deflatemod_headers 并不是必须,那为什么要安装呢?主要是其官方配置文件中使用了 header 模块来确保不会发送错误的内容。
<Location />

        # 插入过滤器

        SetOutputFilter DEFLATE

        # Netscape 4.x 有一些问题 ...

        BrowserMatch ^Mozilla/4 gzip-only-text/html

        # Netscape 4.06-4.08 有更多的问题

        BrowserMatch ^Mozilla/4\.0[678] no-gzip

        # MSIE 会伪装成 Netscape ,但是事实上它没有问题

        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

        # 不压缩图片

        SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary

        # 确保代理不会发送错误的内容

        Header append Vary User-Agent env=!dont-vary

</Location>

另有一种简单的设置:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
很好理解,可以放在 Directory,Virtualhost,Location 任意地方。

怎么看是否生效了呢?来记录下日志:
#
声明输入流的 byte 数量
DeflateFilterNote Input instream
#
声明输出流的 byte 数量
DeflateFilterNote Output outstream
#
声明压缩的百分比
DeflateFilterNote Ratio ratio
#
声明日志类型
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

大部分 CSS,htm 页面都可以压缩到 30% ,即文章开头我提到的能压缩 70%

参考文档:
Apache
模块 mod_deflate
http://www.itlearner.com/code/apache2.2/mod/mod_deflate.html
Apache deflate
模块配置说明
http://www.itlearner.com/article/2007/3819.shtml

如果出现如下错误
Cannot load /usr/local/apache/modules/mod_deflate.so into server: /usr/local/apache/modules/mod_deflate.so: undefined symbol: inflateEnd
需要在 LoadModule deflate_module  modules/mod_deflate.so 的前面加载zlib.so
32 操作系统增加以下内容:
LoadFile /usr/lib/libz.so
LoadModule deflate_module     modules/mod_deflate.so

64 操作系统增加以下内容:
LoadFile /usr/lib64/libz.so
LoadModule deflate_module     modules/mod_deflate.so

 

备注: 请以zlib实际文件为准,有时为libz.so.1

### 如何在 Windows 系统中安装 PythonQt Designer 并配置环境 #### 安装 PyQt6 和 Qt Designer 为了在 Windows 上使用 Qt Designer,可以通过 `pip` 命令安装最新的 PyQt6 模块。PyQt6 是一个用于创建图形用户界面 (GUI) 应用程序的工具包,并附带了 Qt Designer 工具。 运行以下命令可以完成 PyQt6 及其相关组件的安装: ```bash pip install pyqt6-tools ``` 此命令会自动下载并安装必要的依赖项,其中包括 Qt Designer[^1]。 #### 配置路径以便访问 Qt Designer 安装完成后,通常可以在以下目录找到 Qt Designer 文件(具体位置取决于 Python 解释器的位置): - **对于标准安装**:`C:\Users\<用户名>\AppData\Local\Programs\Python\<版本号>\Lib\site-packages\pyqt6_tools` - 或者通过脚本启动:`python -m pyqt6_designer`. 如果希望直接从文件资源管理器或桌面快捷方式打开 Qt Designer,则需将其可执行文件所在路径添加到系统的环境变量 PATH 中。操作方法如下: 1. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置。 2. 单击“环境变量”,在“系统变量”部分找到名为 “Path”的条目并编辑它。 3. 添加上述提到的设计工具所在的完整路径至列表末尾。 这样处理之后,在任意 CMD 终端窗口输入 designer.exe 就能调用该应用程序。 #### 测试安装成功与否 验证是否正确设置了所有内容的一个简单办法就是尝试加载设计模式本身或者利用 PyQT 创建一个小项目来看看能否正常渲染 UI 元素。下面给出一段简单的例子展示如何载入由设计师保存下来的 .ui 文件并通过 python 运行起来: ```python from PyQt6 import uic import sys from PyQt6.QtWidgets import QApplication, QMainWindow class MyUI(QMainWindow): def __init__(self): super(MyUI,self).__init__() # 加载 ui 文件 uic.loadUi('your_ui_file.ui', self) if __name__ == '__main__': app = QApplication(sys.argv) window = MyUI() window.show() try: sys.exit(app.exec()) except SystemExit: pass ``` 以上代码片段假设存在一个叫做 'your_ui_file.ui' 的文件位于当前工作目录下,它是之前通过 Qt Designer 构建出来的界面布局定义文档。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值