如何获取我的 Rails 应用程序可以生成的所有 URL 的完整列表?

我不希望从 rake 路由中获得路由,而是希望获取与我的应用程序中所有动态生成的页面相对应的实际 URL...

这可能吗?

(背景:我这样做是因为我想要一个完整的 URL 列表来进行一些我想做的负载测试,它必须覆盖应用程序的整个范围)

有帮助吗?

解决方案

我能够使用以下命令生成有用的输出:

$ 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:'

其他提示

您可以很快地编写一个程序来获取输出 rake routes 然后解析输出以将 URL 列表放在一起。

我通常为负载测试所做的是使用类似的工具 网页加载 并编写几种不同类型的用户会话(或用户可以采取的不同路线)的脚本。然后,我创建混合的用户会话并在网站上运行它们,以准确了解网站的运行方式。

通常,我还会在总共 4 台不同的计算机上执行此操作,运行大约 80 个并发用户会话,以真实地模拟应用程序中将发生的情况。这也确保我不会花费太多时间优化不常访问的页面,而是可以专注于关键路径上的整体应用程序性能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top