【发布时间】:2023-03-17 08:50:01
【问题描述】:
我正坐在这里,试图为我的新网站寻找一种绕过 URL 重写的方法。这将是一个完全基于 AJAX 的站点,其中 URL 在 90% 的 URL 中不重要。
在 Chrome 中按 F12 并进入网络后,我开始监控响应性,因为我更改了 .htaccess 中的参数。
我发现当输入一个服务器重启后没有看到的地址时,它花费了 80-100ms 来处理请求(等待时间)。这是在本地主机上运行的。这发生在更改 GET 请求的动态部分 ?id=changeThis 和输入新 URL(如 /id/changeThis..)时。然而,下一次处理需要 8-12 毫秒...
如果我使用^(.*) 将所有请求重定向到 index.php 没有影响。
问题:如果我使用^([a-zA-Z\-/]*)(注意没有句号)使 main.css 等静态文件不被重写,或者最好将所有文件放在静态文件夹中(因此松散的灵活性)并且仍然使用^(.*) 来重定向所有不在静态异常文件夹中的请求。 (我在这里考虑速度。)
问题:任何人都可以批准我的发现吗? Apache 是否真的“缓存”了请求,以便对特定 URL 的第一个请求需要时间来处理?
【问题讨论】:
-
Apache 本身不做任何“缓存”。但是,根据您使用的编程语言或框架,第一次点击 URL 可能需要额外的时间来加载实际运行的代码。
-
@GregHewgill 实际上我在请求不存在的文件。所以 PHP 从来没有真正加载过..
-
文件缓存的可能位置:浏览器、防火墙、路由器、isp、主机和用户之间的任何服务器。
-
@Dagon 好的,所以它不可能是浏览器(我清除了缓存),它不可能是路由器(它是 localhost),因此也不是 isp,让我们试试 flushdns。
-
@Dagon 不,不能是其中任何一个......
标签: php regex apache mod-rewrite