首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google App Engine上创建一个大型网站地图?

在Google App Engine上创建一个大型网站地图?
EN

Stack Overflow用户
提问于 2010-07-07 17:39:24
回答 3查看 1.4K关注 0票数 4

我有一个大约有100,000个独立页面的网站。

(1)如何为所有这些链接创建站点地图?我是不是应该在一个与sitemap协议兼容的大文件中列出它们呢?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-07 22:42:23

站点地图不能超过10MB,并且列出的URL不能超过50,000个,所以您需要以某种方式将其拆分。

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

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

代码语言:javascript
复制
<?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页,以此类推。

票数 7
EN

Stack Overflow用户

发布于 2010-07-07 22:26:17

您可以使用Query Cursors来规避1000个查询条目的限制;尽管即使使用游标也不能完全解决您的问题,因为生成一个包含100,000个条目的站点地图很容易超过单个请求允许运行的时间。此外,动态生成sitemap很容易耗尽所有或大量的资源配额。

如果您的数据不是非常动态,我会考虑生成一个静态站点地图文件,并将其包含在您的部署包中。即使您的数据是非常动态的,您也可能希望采用一种策略,即每天只重新生成一次数据,然后进行部署以将其放到服务器上。

票数 0
EN

Stack Overflow用户

发布于 2012-03-19 19:02:12

我也遇到过类似的问题,但为了重新发明轮子,我只是插入了Google Sitemap Generator http://sitemap-generators.googlecode.com/svn/trunk/docs/en/sitemap-generator.html。这对我来说很有效,因为我的应用程序是基于python的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3193565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档