Apache 如何处理 .htaccess 文件更改?他们是不是在每个请求上重新解析?

Posted

技术标签:

【中文标题】Apache 如何处理 .htaccess 文件更改?他们是不是在每个请求上重新解析?【英文标题】:How Apache handles .htaccess file changes? Are they reparsed on each request?Apache 如何处理 .htaccess 文件更改?他们是否在每个请求上重新解析? 【发布时间】:2015-05-27 19:12:12 【问题描述】:

我想知道,.htaccess 文件是如何在 Apache 中实现的?它们是否真的在每个后续请求中重新解析或缓存在某处并仅在更改时重新解析?

如何实现对这些文件的更改跟踪? stat() 用于每个请求或通过 inotify() 的文件更改?

【问题讨论】:

【参考方案1】:

.htaccess 除非您无权访问 apache 配置,否则不应使用文件。例如共享主机。由于如今 VPS/云服务器非常丰富且成本非常低,因此几乎没有理由获得共享主机。

.htaccess 文件实际上是在每个请求上读取的,因为它使用每个目录上下文。因此,使用它们会导致轻微的性能损失。即使您不使用.htaccess 文件,即使您的配置中只包含AllowOverride All 也会产生相同的效果。

需要 .htaccess 文件的误解是因为大多数软件,例如wordpress 或其他 cmses 告诉您在此处添加代码。那是因为大多数主机在过去几年都是共享的,除非您购买昂贵的 VPS 或专用服务器,否则人们无法访问 Apache 配置文件。

我不相信有任何跟踪,并且可能不需要,因为它会在每个请求上读取.htaccess 文件,无论是否进行了更改。所以这就是为什么它们完全没有效率并且不应该被使用。将您的规则和指令放在您的虚拟主机文件中,您将拥有一个更好的服务器。

您可以从 Apache 读取 When not to use .htaccess。

【讨论】:

以上是关于Apache 如何处理 .htaccess 文件更改?他们是不是在每个请求上重新解析?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 如何处理不适合内存的数据?

您如何处理 Apache Pig 中的空输入文件或丢失的输入文件?

org.apache.commons.net.ftp.FTPClient下载中文文件夹乱码如何处理?

如何处理与Apache HttpClient的无效SSL证书

Apache Apex 如何处理背压?

Apache spark如何计算分区以及在executor中如何处理分区