从相对URL(给定基本URL)确定完整URL的最快方法是什么
时间:2020-03-05 18:43:01 来源:igfitidea点击:
我目前正在使用模块URI :: URL从相对URL生成完整的URL。但是,它的运行速度不如我希望的快。有谁知道另一种方法可以更快?
解决方案
回答
也许我走错了路,但是不会,
$full_url = $base_url . $relative_url
工作? IIRC Perl文本处理非常快。
@lennysan啊,当然可以。抱歉,我帮不上忙,我的Perl非常生锈。
回答
下面的代码应该工作。
$uri = URI->new_abs( $str, $base_uri )
我们还应该查看search.cpan.org上的URI页面。
回答
布伦丹,我应该澄清一下,我不能保证相对路径会是什么样子。这可能非常棘手(例如,在前面加斜杠,不加斜杠,并带有" ../"等)。
彼得,这就是我现在正在使用的。还是比使用URI :: URL-> new($ path)-> abs更快?
回答
刚刚发生在本文中的所有文章指出了Perl的Redhat / Centos / Fedora实现中的缺陷,这些缺陷会深深地影响URI。
如果运行的是这些Linux操作系统之一,则可能需要从原始源(而不是RPM源)重新编译Perl。
I realized that anyone running perl code with the distribution perl interpretter on Redhat 5.2, Centos 5.2 or Fedora 9 is likely a victim. Yes, even if your code doesn’t use the fancy bless/overload idiom, many CPAN modules do! This google search shows 1500+ modules use the bless/overload idiom and they include some really popular ones like URI, JSON. ... ... At this point, I decided to recompile perl from source. The bug was gone. And the difference was appalling. Everything got seriously fast. CPUs were chilling at a loadavg below 0.10 and we were processing data 100x to 1000x faster!
回答
可能取决于我们如何获得那两个字符串。 URI :: URL或者类似的库中可能是安全,防火的方法,其中将考虑所有替代方法,包括恶意的替代方法。也许速度较慢,但是在某些环境中,子弹的速度会更快。
但是,如果我们希望那里有一些简单而不棘手的内容,那么可以看看它是否以/、../的链或者任何其他字符开头。第一个将服务器名称+ URL,第二个从基本uri直到进入其他2个替代方法之一的路径,或者仅将其添加到基本url。