我已经搜索了几个月的互联网试图找到一个解决方案,所以任何指导将是一个巨大的帮助我。
所以我的任务是我有一个使用Fargate的RoR应用程序,我有一个站点Map索引和三个站点Map(链接以50 k为增量),这些站点Map需要通过我的url(mysite.com/sitemap...)访问。
因此,据我所知,容器是短暂的,将站点Map添加到我的公共文件夹将有不希望的结果与谷歌索引。
我已经找到了无数关于如何通过S3使用Heroku上传网站Map的教程-但这个选项似乎使用了S3的公共URL,而不是来自我的域的URL。
我的猜测是我需要使用像弹性文件存储甚至S3这样的东西-但我迷路了。我甚至可以这样说,像Airbnb和Github这样的公司如何存储他们的网站Map?
2条答案
按热度按时间8wtpewkr1#
我不知道Airbnb或Github的网站Map,但如果你能让你的应用程序在Fargate上运行,那么你就可以想出任何办法。
因此,据我所知,容器是短暂的,将站点Map添加到我的公共文件夹将有不希望的结果与谷歌索引。
容器确实是短暂的,但这与Google的不良结果无关。
你可以在S3或弹性文件存储器上托管站点Map,也可以配置S3使用你的域名(见下文),但我不确定这是否值得。
最简单的方法是将站点Map放在你的公共文件夹中,这个过程就是在你的开发机器上生成文件并将它们添加到repo中,当它们被部署后,它们将位于每个容器的公共文件夹中,并可供Rails应用程序使用。
如果您决定不想让Rails应用程序提供站点Map(这对于某些用例可能是有意义的),那么下一个最简单的事情可能是将其托管在S3上。
你可以配置S3使用一个子域。我不确定这是否会影响谷歌如何看待你的网站,或者网站索引是否应该托管在同一个域上。
如果你想在S3上托管你自己的域名,那么你可以使用CloudFront将所有请求转发到你的Rails应用,除了站点Map,站点Map可以从S3提供。
参考:Using S3 with Subdomain
编辑:如果你决定使用CloudFront,那么就没有必要使用S3。CloudFront可以缓存网站Map几天或几周,而你的应用程序在这段时间里只会提供一次服务。
68bkxrlz2#
我的猜测是我需要使用像弹性文件存储甚至S3这样的东西-但我迷路了。我甚至可以这样说,像Airbnb和Github这样的公司如何存储他们的网站Map?
像这样的大公司肯定会在他们的网站前面有一个CDN。你也可以在你的网站前面有一个CDN。AWS的解决方案是CloudFront,但我也建议你考虑一下Cloudflare。
在任何一种情况下,一旦你的网站前面有了CDN,你就可以根据URL路径配置它来服务来自不同来源的不同内容。例如,你可以将默认来源设置为你的Ruby应用,并将
/sitemap
来源设置为一个S3桶,其中包含你的sitemap文件。或者,您可以将站点Map存储在EFS中,将EFS卷Map到您的Fargate任务,并配置您的Ruby应用程序(或在Ruby应用程序前面运行的Nginx?),以便在收到
/sitemap
请求时在站点Map卷中提供文件。