我正在Mojolicus中编写一个网站,该网站需要根据域名路由到某些文件。Ie:
mydomain.com/foo -> controllerA#foo
mydomain.es/foo -> controllerB#foo
文档提供了以下解决方案:
$r->get('/foo')->over(host => qr/mydomain.com/)->to('controllerA#foo');
$r->get('/foo')->over(host => qr/mydomain.es/)->to('controllerB#foo');
但也警告我,这将禁用路由缓存。
有更好的方法吗?如果没有,那么禁用路由缓存有多糟糕?这个网站需要能够处理大量请求(高达10.000/小时),所以我可以想象路由缓存是首选。
谢谢!
脑海中浮现的一种方法是在mojolicus看到请求URI之前重写它。例如:
mydomain.com/foo -> mydomain.com/foo/com
mydomain.es/foo -> mydomain.com/foo/es
然后添加一些路线:
$r->get('/foo/com')->to('controllerA#foo');
$r->get('/foo/es')->to('controllerB#foo');
我不知道你是如何部署这个应用程序的,但如果你使用Apache或NGIX作为反向代理,你可以在那里处理域路由并重写它。