从相对 URL(给定基本 URL)确定完整 URL 的最快方法是什么
-
09-06-2019 - |
题
我目前正在使用该模块 URI::URL
从相对 URL 生成完整 URL;但是,它的运行速度没有我希望的那么快。有谁知道另一种可能更快的方法?
解决方案
其他提示
刚刚发生过 本文 其中指出了 Perl 的 Redhat/Centos/Fedora 实现中的缺陷,这些缺陷影响了 URI
深刻地。
如果您正在运行这些 Linux 版本之一,您可能需要从原始源代码(而不是 RPM 源代码)重新编译 Perl。
我意识到任何在 Redhat 5.2、Centos 5.2 或 Fedora 9 上使用发行版 perl 解释器运行 perl 代码的人都可能是受害者。是的,即使您的代码不使用花哨的祝福/重载习惯用法,许多 CPAN 模块也会这样做!谷歌搜索显示有 1500 多个模块使用 bless/overload 习惯用法,其中包括一些非常流行的模块,例如 URI、JSON。...
...此时,我决定从源代码重新编译 perl。错误消失了。差异是惊人的。一切都变得非常快。CPU 在平均负载低于 0.10 时变得寒冷,而我们处理数据的速度提高了 100 倍到 1000 倍!
布伦丹,我应该澄清一下,我不能保证相对路径会是什么样子。这可能非常棘手(例如前面有斜线、没有斜线、有“../”等)。
彼得,这就是我现在正在使用的。或者比使用 URI::URL->new($path)->abs 更快?
可能取决于你如何获得这两个字符串。也许安全、防火的方法就是 URI::URL 或类似库中的方法,其中将考虑所有替代方案,包括恶意方案。也许会慢一些,但在某些环境下,子弹飞到你自己脚上的速度会更快。
但是,如果您期望有一些简单且不棘手的内容,可以查看它是否以 /、../ 链或任何其他字符开头。第一个将放置服务器名称 + url,第二个从基本 uri 开始的切路径,直到进入其他 2 个替代方案之一,或者只是将其添加到基本 url。
也许我拿错了方向,但我不会,
$full_url = $base_url . $relative_url
工作?IIRC Perl 文本处理速度非常快。
@lennysan 啊当然是的。抱歉我无能为力,我的 Perl 已经很生疏了。