在Rails应用程序中获取URL的完整列表
时间:2020-03-05 18:59:07 来源:igfitidea点击:
如何获得我的rails应用程序可以生成的所有URL的完整列表?
我不希望我从耙子路线中获得路线,而是想获得与应用程序中所有动态生成的页面相对应的actul URL。
这有可能吗?
(背景:之所以这样做,是因为我想要一个完整的URL列表来进行一些负载测试,该测试必须覆盖应用程序的整个范围)
解决方案
回答
我们可以很快找到一个程序,该程序可以获取" rake route"的输出,然后将其解析为URL列表。
通常,对于负载测试,我要做的是使用WebLOAD之类的工具,并为几种不同类型的用户会话(或者用户可以采用的不同路线)编写脚本。然后,我创建了一个用户会话组合,并通过网站运行它们,以使人们对网站的运行方式有一个准确的了解。
通常,我还将在总共4台不同的计算机上执行此操作,这些计算机运行约80个并发用户会话,以实际模拟整个应用程序中将发生的情况。这也确保了我不会花太多时间来优化不经常访问的页面,而是可以专注于关键路径上的整体应用程序性能。
回答
我可以使用以下命令产生有用的输出:
$ wget --spider -r -nv -nd -np http://localhost:3209/ 2>&1 | ack -o '(?<=URL:)\S+' http://localhost:3209/ http://localhost:3209/robots.txt http://localhost:3209/agenda/2008/08 http://localhost:3209/agenda/2008/10 http://localhost:3209/agenda/2008/09/01 http://localhost:3209/agenda/2008/09/02 http://localhost:3209/agenda/2008/09/03 ^C
wget参数的快速参考:
# --spider don't download anything. # -r, --recursive specify recursive download. # -nv, --no-verbose turn off verboseness, without being quiet. # -nd, --no-directories don't create directories. # -np, --no-parent don't ascend to the parent directory.
关于ack
ack和grep类似,但是使用perl正则表达式,它更完整/更强大。
-o告诉ack仅输出匹配的子字符串,并且我使用的模式查找以'URL:'开头的非空格内容