在Google App Engine上创建大型站点地图?

dem*_*mos 4 sitemap google-app-engine large-data-volumes

我有一个大约有100,000个独特页面的网站.

(1)如何为所有这些链接创建Sitemap?我应该在大型站点地图协议兼容文件中列出它们吗?

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

Dre*_*ars 6

网站地图不得超过10MB,列出的网址不得超过50,000个,因此您需要以某种方式对其进行细分.

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

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

<?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>
Run Code Online (Sandbox Code Playgroud)

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

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