通过 PHP 进行文件重定向的成本

通过 PHP 进行文件重定向的成本

我制作了一个 RESTful 应用程序,它使用类似路径的 URL 来访问不同的数据。我使用的规则非常简单 - 所有指向不存在文件的 URL 都重定向到我的主要框架初始化脚本,然后它从那里处理它们,作为 RESTful 请求。一切都按预期工作 - 我输入“http://mysite.org/do-something“并且我的框架将“/do-something”作为$_SERVER['REQUEST_URI']。很好。现在来点更复杂的东西:“http://mysite.org/category1/do-something“。脚本运行完美,但生成的 HTML 无法加载样式表、图像和 javascript。它在错误的路径中查找它们,可以使用 <base> 标签修复,但是 <base> 标签会阻止站点使用相对链接(如锚链接)。我宁愿避免使用 <base> 标签。

在我的框架中有一个高级自动加载器,它可以找到所有使用的脚本(它的速度很快,因为路径配置被缓存,并且只在更改时刷新)。它很有效,并且不会产生比其他常见自动加载器更大的性能成本。到目前为止一切顺利。

我发明了一种使用不带 <base> 标签的 RESTful URL 的解决方案:将所有 HTML 请求文件重定向到 PHP 自动加载器,它通过 exit(file_get_contents($filename)) 返回文件。

我有一个严肃的问题:如果用来加载图像,难道不会有很大的性能成本吗?

有没有办法只通过 .htaccess 来实现?也许脚本生成的 .htaccess 是最好的?有没有办法在 .htaccess 中包含一个文件?如果此文件发生任何写入错误,可能会出现安全风险。

顺便说一句,我预计网站负载适中(每天大约 1K 名用户)。

答案1

如果 apache 需要调用 PHP 脚本来提供图像,则性能会受到影响。您可以避免将静态文件定向到您index.php.htaccess

RewriteEngine on
<any further rules>
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php

相关内容