【问题标题】:Sitemaps structure for large App Engine site大型 App Engine 网站的站点地图结构
【发布时间】:2011-01-28 21:44:34
【问题描述】:

我正在考虑构建大型 App Engine 网站(+1M 网址)的最佳方式。

我需要链接到 sitemap[n].xml 文件的域文件的根路径中的 sitemaps.xml 文件。

sitemaps.xml 文件最多可以链接 1000 个 sitemap[n].xml 文件,每个 sitemap[n].xml 文件最多有 50K 个网址。

有没有办法动态生成包含 50K url 的文件?

在不一次获取 50K 实体的情况下,还有其他方法吗?

谢谢!

PS:文件不能是静态的,因为它们必须放在域的根路径中:(

【问题讨论】:

  • 如果需要,您可以使用“静态”处理程序从域的根目录提供静态文件。

标签: google-app-engine sitemap large-data-volumes


【解决方案1】:

最好的办法是提前生成它们。也许对您的数据运行 map-reduce 并将每个 sitemap[n].xml 存储在单独的数据存储实体中的 blob 中。然后处理程序(从 - url: /sitemap(.*) 映射)简单地从相应实体返回 blob。

所有这一切都取决于您的网址是如何存储和/或生成的。

您还可以离线生成所有 url 并将它们放在一个大文件中。将该文件连同具有该文件中每组 50k url 的偏移量的文件一起上传到 blobstore。在处理程序中,只需从 blobstore 中获取相应的 50k url 组。

还意识到拥有如此庞大的站点地图可能没有那么有用(就 SEO 而言)。

【讨论】:

  • 确实没有理由先上传单个 blob,然后提供其中的一部分 - 只需为每个要提供的文件上传一个 blob 并直接提供它们。
  • 同意,但这完全取决于您的工作流程。如果给你一个包含所有 url 的大文件,你可以简单地读取 50k url 并发送它们,并记住下一个 50k 的位置。然后你不需要提前做任何预处理。但是...您是对的...我们确实没有足够的信息来给出一个好的答案。
【解决方案2】:

为什么不能在 app.yaml 中添加一个条目来重定向文件所在的位置。 Robots.txt 应该在根级别,但我将它保存在 /img

- url: /robots.txt  
  static_files: img/robots.txt
  upload: img/robots.txt

对于任何爬虫来说都是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2011-02-18
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多