Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apache是否缓存请求URL?_Php_Regex_Apache_Mod Rewrite - Fatal编程技术网

Php Apache是否缓存请求URL?

Php Apache是否缓存请求URL?,php,regex,apache,mod-rewrite,Php,Regex,Apache,Mod Rewrite,我坐在这里,试图找到一种方法来为我的新网站重写URL。它将是一个完全基于AJAX的站点,其中URL在90%的URL中都不重要 在Chrome中按F12键并进入网络后,我在.htaccess中更改参数时开始监控响应 我发现,当输入一个自重启以来服务器从未见过的地址时,它花费了80-100毫秒来处理请求(等待时间)。这是在本地主机上运行的。在更改GET请求的动态部分?id=changeThis和输入新URL(如/id/changeThis.)时都会发生这种情况。。然而,下一次处理需要8-12毫秒 如

我坐在这里,试图找到一种方法来为我的新网站重写URL。它将是一个完全基于AJAX的站点,其中URL在90%的URL中都不重要

在Chrome中按F12键并进入网络后,我在.htaccess中更改参数时开始监控响应

我发现,当输入一个自重启以来服务器从未见过的地址时,它花费了80-100毫秒来处理请求(等待时间)。这是在本地主机上运行的。在更改GET请求的动态部分?id=changeThis和输入新URL(如/id/changeThis.)时都会发生这种情况。。然而,下一次处理需要8-12毫秒

如果我使用
^(.*)
将所有请求重定向到index.php,则不会产生影响

问题:如果我使用
^([a-zA-Z\-/]*)
(注意不要用句号)使main.css之类的静态文件不被重写,或者最好将所有文件放在一个静态文件夹中(这样就失去了灵活性),并且仍然使用
^(.*)
重定向所有不在静态异常文件夹中的请求。(我在考虑速度。)


问题:有人能批准我的发现吗?Apache是否真的“缓存”了请求,以便对特定URL的第一个请求需要时间来处理?

从Apache配置中禁用mod_缓存。
在我的配置中,它是默认启用的。

要回答您的问题:

使用更少的子句和更简单的正则表达式,处理速度会更快,但我们讨论的顺序是几毫秒


Apache不会按照您的想法缓存请求—但是,您的linux系统可能正在缓存文件,因此后续加载速度更快。我想这就是你所看到/想到的——apache和网站文件都缓存在操作系统的页面中,以便更快地访问。重新启动会使这些页面变脏,需要重新加载。

Apache本身不进行任何“缓存”。但是,根据您使用的编程语言或框架,第一次点击URL可能需要额外的时间来加载实际运行的代码。@GregHewgill实际上我是在请求不存在的文件。所以PHP从未实际加载。可能缓存文件的位置:浏览器、防火墙、路由器、isp、主机和用户之间的任何服务器。@Dagon好的,所以它不能是浏览器(我清除了缓存),它不能是路由器(它是本地主机),因此也不能是isp,让我们试试flushdns。@Dagon否,不能是这些中的任何一个…默认情况下,此处不启用。@StudentofHogwarts什么问题?我想你是想知道apache是否缓存了响应?我发现mod_缓存两次影响了响应-一次是没有选择对文件的更改(例如,如果我上传了一个更新的页面,它没有被选择),另一次是添加启用客户端缓存的标题-这是我不想要的(我的站点完全动态)。当然,web服务器使用url对缓存进行寻址,相同的url会在第二次请求时命中缓存,如果您稍微更改url(不同的页面,但也不同/附加参数),服务器无法判断页面是否不同,必须返回“true”,未缓存的版本。您认为它是否打开,即使在httpd.conf文件中找不到它,在我的系统中,除了httpd.conf文件之外,我还有具有各种设置的httpd.d文件夹。有很多方法可以转储所有已加载模块的列表,但具体方式取决于系统