我的网站有大约 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/