我目前使用模块URI::URL
从相对URL生成完整URL;然而,它并没有像我希望的那样快。有谁知道另一种方法来做到这一点可能会更快?从相对URL(给定基准URL)确定完整URL的最快方式是什么
回答
也许我得到了棍子的错误结束,但不会,
$full_url = $base_url . $relative_url
工作? IIRC Perl文本处理非常快。
@lennysan当然是啊。对不起,我忍不住,我的Perl很生锈。
布伦丹,我应该澄清一点,我不能保证相对路径的样子。这可能会非常棘手(例如在前面有斜线,没有斜线,有“../”等)。
彼得,这就是我现在使用的。或者是使用URI :: URL-> new($ path) - > abs更快?
刚刚发生在this article之间,它指出了Perl的Redhat/Centos/Fedora实现中的缺陷,它深刻地影响了URI
。
如果您正在运行其中一种Linux风格,则可能需要从原始源代码(而非RPM源代码)重新编译Perl。
我意识到在Redhat 5.2,Centos 5.2或Fedora 9上运行perl代码并分发perl代码的任何人都可能成为受害者。是的,即使你的代码不使用花哨的祝福/超载惯用法,许多CPAN模块也可以!这谷歌搜索显示1500 +模块使用保佑/超载成语,他们包括一些非常受欢迎的像URI,JSON。 ...
...在这一点上,我决定从源代码重新编译perl。错误消失了。差异是惊人的。一切都变得非常快。在0.10以下的loadavg中,CPU处于冷冻状态,我们将数据处理速度从100倍提高到了1000倍!
可能取决于你如何获得这2个字符串。或许这种安全,防火的方法就是URI :: URL或类似的库,其中包括所有的替代品,包括恶意的,都会被考虑。也许速度较慢,但在某些环境下速度更快的是子弹走向自己的脚步。
但是,如果你期望有一些简单而不棘手的东西可以看到它是以/,/ ..或其他字符串开头的。第一个将把服务器名称+ url,第二个从基础uri的chop路径,直到获得另外两个选项之一,或者将它添加到基础url。