google-app-engine - 在 Google App Engine 上创建大型站点地图?

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

我的网站有大约 100,000 个不同的页面。

(1) 如何为所有这些链接创建站点地图?我是否应该将它们平放在一个大型站点地图协议(protocol)兼容文件中?

(2) 需要在有 1000 个项目查询限制的 Google App Engine 上实现此功能,并且我所有的个人站点 URL 都存储为单独的条目。我该如何解决这个问题?

最佳答案

站点地图不得超过 10MB,列出的 URL 不得超过 50,000 个,因此您需要以某种方式将其分解。

您将需要某种分片策略。我不知道你的数据是什么样的,所以现在假设每次你创建一个页面实体时,你都为它分配一个 1 到 500 之间的随机整数。

接下来,创建一个 Sitemap index ,并为每个索引值吐出一个站点地图链接:

<?xml version="1.0" encoding="UTF-8"?>
   <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://example.appspot.com/sitemap?random=1</loc>
   </sitemap>
   <sitemap>
      <loc>http://example.appspot.com/sitemap?random=2</loc>
   </sitemap>
   ...
   <sitemap>
      <loc>http://example.appspot.com/sitemap?random=500</loc>
   </sitemap>
</sitemapindex>

最后,在您的站点地图页面上,查询页面并过滤您的随机索引。如果您有 100,000 个页面,这将为您提供每个站点地图大约 200 个 URL。

此处略有不同的策略是为每个页面提供一个自动递增的数字 ID。为此,您需要一个计数器对象,该对象在每次创建新页面时被事务性锁定并递增。这样做的缺点是您无法并行创建新的页面实体。好处是您可以更好地控制页面的布局方式,因为您的第一个站点地图可以是第 1-1000 页,依此类推。

关于google-app-engine - 在 Google App Engine 上创建大型站点地图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193565/

相关文章:

python - 如何在appengine应用程序中使用来自/usr/local/lib/python2.7/dist-packages的模块

cakephp - 如何为 CakePHP 创建站点地图?

c# - 在 ASP.NET 中构建 SiteMap

solr - Apache Solr 能否处理 TB 大数据

google-app-engine - Google Calendar api - 超出速率限制(即使不是)

java - 如果未登录,则服务器端重定向

php - 站点地图是否需要包含链接的静态页面?

java - 使用 Apache CXF 传输大消息

java - 在 Java 中读取一个大文件并写入多个(数十、数百或数千)文件?

java - 可以将 Google 模块与 Eclipse 的 Google 插件一起使用吗?