我想确定使用Apache的.htaccess mod重写是否比使用PHP的头redirect核心函数从一个PHP文件redirect到另一个redirectPHP文件更快。
我环顾四周,我无法find关于这个问题的任何事情。 任何帮助,将不胜感激。
注意:我认为“redirect”是指一个重写规则,它实际上并不使用[R]标志,而是将请求redirect到一个不同的PHP文件 – 例如根本没有标志或者[L]旗。
如果这个假设是错误的,那么请看看我的“关于表演的说明”的论点,这依然成立。
.htaccess规则肯定会更快!
原因如下:
header :请求进来,由Apache处理,然后给PHP,然后PHP发送到您的访问者的浏览器一个页面redirect头,浏览器发送另一个请求,Apache处理它,给PHP,并只有所有你的访客终于得到他想要的! 性能方面的注意事项 :在任何情况下(甚至在千兆位局域网上),选项#1都会更快。 正则expression式可能很慢,但是Apache是一个已经在内存中的C程序,PHP是一种解释型语言,它在处理之前必须读取并加载脚本文件。 因此,我实际上希望Apache的重写规则有更好的性能。 但是,主要因素是针对方法#2的额外HTTP响应请求。
如果你坚持用PHP来做,那么考虑一下:
这种方法也会比基于header的更快。
我的直觉告诉我,htaccess将会更快,但是在你的特定环境下实际上没有可以替代它的基准。
有一件事要记住,使用.htaccess文件减慢了一切(如果设置是在)。 将您的重写放在Apache的一个.conf文件(httpd.conf或virtual-hosts.conf)中,然后设置AllowOverride none将会更快。
至于PHP与mod_rewrite,这很难说。 他们都这么快,我怀疑这一点。
至于表演,你必须考虑到两个方面。 首先是服务器的处理性能,其次是最终用户体验的性能。
如果使用任何types的redirect,无论是通过PHP还是Apache的redirect规则(可以在.htaccess或Apacheconfiguration文件中,最终客户端必须首先等待第一个响应(redirect),然后发送另一个请求到该URL,最后才能接收想要的回应。
如果这个最终用户的性能对你来说很重要(例如你的目标受众是在中国或类似的),你不应该使用redirect(不是PHP或者Apache),而是改写原始请求,以便用户得到正确的响应第一个请求。