mod_ext_filter 和 mod_filter 之间的区别?
Posted
技术标签:
【中文标题】mod_ext_filter 和 mod_filter 之间的区别?【英文标题】:Difference between mod_ext_filter and mod_filter? 【发布时间】:2016-05-06 09:51:07 【问题描述】:我使用this 指南在 CentOS 6.4 服务器上安装了 php 5.6.17
。 Contao 安装正在该服务器上运行。 Contao 在其默认的 .htaccess 中带有这些指令:
##
# Gzip compression
# @see https://github.com/h5bp/html5-boilerplate
##
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>
</IfModule>
这将启用自动 Gzip 压缩。但是,在该服务器上,我注意到默认情况下未启用 mod_filter
扩展,即使它应该是 php56w-common
包的一部分(参见 https://webtatic.com/packages/php56/)。我确实注意到启用了mod_ext_filter
扩展 - 我相应地更改了我的指令(用mod_ext_filter
替换mod_filter
)这似乎有效。
我以前从未见过mod_ext_filter
,所以我想知道这两个模块之间的确切区别是什么(以及为什么更常见的(?)mod_filter
模块在 CentOS 的php56w-common
包中不可用)。
【问题讨论】:
【参考方案1】:“我相应地更改了我的指令(用 mod_ext_filter 替换 mod_filter),这似乎有效。”我无法想象这可能意味着什么,但这两个模块使用完全不同的指令并服务于不同的目的。 mod_ext_filter
允许您在您选择的外部脚本中编写过滤器。 mod_filter
运行从已编译模块加载的过滤器。
Apache 模块 mod_filter
描述:上下文相关的智能过滤器配置模块
https://httpd.apache.org/docs/2.2/mod/mod_filter.html
Apache 模块 mod_ext_filter
描述:将响应正文通过外部程序传递给客户端之前
https://httpd.apache.org/docs/2.2/mod/mod_ext_filter.html
如果——正如我所怀疑的——你没有使用任何一个模块,为什么要加载它们?
编辑:您指的是 PHP 过滤模块吗?如果是这样,那么它就永远内置在 PHP 中了。运行 php -m | grep filter
以查看为您自己列出的内容。
【讨论】:
抱歉,我在原帖中添加了更多信息。我明白了,所以mod_ext_filter
与mod_filter
完全不同。奇怪的是,即使mod_filter
未加载(根据phpinfo()
并看到由于<IfModule mod_filter.c>
指令而未启用Gzip 压缩),AddOutputFilterByType DEFLATE …
指令仍然有效。怎么可能?
事实证明,有问题的服务器运行的是较旧的 Apache 版本,其中集成了 mod_filter
,因此不能作为模块使用。这就是它起作用的原因。以上是关于mod_ext_filter 和 mod_filter 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等
shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()