在tomcat上执行动态URL重写的高效方法

时间:2015-03-06 21:03:34

标签: java apache tomcat servlets

我目前正在迁移一个包含大量静态内容(HTML文件)和一些动态内容的大型网站。

我正在努力创建性能最高的网站,尝试尽可能地保持一切尽可能静态,尽可能少使用servlet。但是,由于旧网站支持复杂的URL,我需要一些重写,并且需要一些它是动态的,例如: http://oldsite/url.htmlhttp://oldsite/url都适用于相同的网址...

我正在寻找表现事实,例如以基准测试结果来支持静态服务网站的影响。

最初我以为我会创建一个过滤器,但这会在每次进入网站的请求时产生开销。我想过只使用覆盖404提到here的东西,然后开销相对较低(对于旧的书签/缓存)。

还有rewrite选项,但这两个都是锁定的,我不确定如何使用它将空白URL映射到HTML文件...目前我猜它是最高性能的方式虽然。

1 个答案:

答案 0 :(得分:1)

  1. 如果重写/重定向是直接的(不需要正则表达式),您可以使用静态concurrent Radix Tree并使用要应用的所有重写/重定向对其进行初始化。 在最坏的情况下,Radix Tree将无法识别不应重命名的URL,因为它并发且快速,因此不应造成巨大负担。

  2. 如果您需要类似regexp的重写并且您不想只依赖于Apache Tomcat,那么您也可以尝试{em> 为所有Servlet工作的UrlRewriteFilter - 兼容的应用服务器 尽管它看起来似乎是一个非常缓慢的解决方案claim但它实际上非常快。