【发布时间】:2011-02-18 15:18:07
【问题描述】:
我正在创建一个社交工具 - 我希望允许搜索引擎获取“公共”用户资料 - 例如 twitter 和 facebook。
我已经在http://www.sitemaps.org 看到了所有协议信息,并且我了解这一点以及如何构建这样的文件 - 如果我超过 50K 限制,还会提供索引。
我苦苦挣扎的地方是我如何运行的概念。
我的一般站点页面的站点地图很简单,我可以使用工具来创建文件 - 或脚本 - 托管文件 - 提交文件并完成。
然后我需要一个脚本来创建用户配置文件的站点地图。我认为这会是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.socialsite.com/profile/spidee</loc>
<lastmod>2010-5-12</lastmod>
<changefreq>???</changefreq>
<priority>???</priority>
</url>
<url>
<loc>http://www.socialsite.com/profile/webbsterisback</loc>
<lastmod>2010-5-12</lastmod>
<changefreq>???</changefreq>
<priority>???</priority>
</url>
</urlset>
我添加了一些???因为我不知道如何根据以下内容为我的个人资料设置这些设置:-
创建新配置文件时,必须将其添加到站点地图中。如果配置文件被更改或“某些”属性被更改 - 那么我不知道我是否更新了地图中的条目 - 还是做其他事情? (更新将是一场噩梦!)
一些用户可能会更改他们的个人资料。就与搜索引擎的相关性而言,谷歌或雅虎搜索找到用户(根据我的要求)配置文件的唯一方法是例如通过 [用户名] 和 [位置],因此一旦配置文件的条目被添加到地图文件中,让搜索机器人重新索引配置文件的唯一原因是如果用户更改了他们的用户名 - 他们不能。或他们的位置 - 和/或设置他们的设置,以便他们的个人资料对搜索引擎“隐藏”。
我假设我的地图创建需要是动态的。根据我上面所说的,我可以想象创建一个新的配置文件并可能编辑某些属性可能会将其标记为需要在站点地图中添加/更新。
假设我将添加/编辑数百万个配置文件,我该如何以合理的方式进行管理。
我知道我需要一个可以在创建每个配置文件时附加 url 的脚本 我知道脚本很可能是一个任务 - 以设定的频率运行 - 也许配置文件具有“索引”之类的属性,并且当配置文件添加到地图时,TASK 将它们设置为“真”。 我没有看到存储地图的最佳方式 - 我是否将其存储在数据存储中,即;
模型=站点地图
属性
key_name=sitemap_xml_1(以及我的地图 sitemap_index_xml)
mapxml=blobstore(原始 xml 映射或 ror 映射)
full=boolean (当 url count 为 50 时设置为 true) # 可能需要这个,因为分片会告诉我们
为了完成这项工作,我的想法是
m 将当前站点地图结构缓存为“sitemap_xml” 保留一个 url 计数的碎片 当我的任务执行时 1. 为标记为“index==false”的前 100 个 url 构建 xml 结构(一次可以运行多少个?) 2.测试当前mcache站点地图是否已满(shardcounter+100>50K) 3.a 如果地图快满了,在模型“sitemap_xml_2”中创建一个新的地图条目 - 更新 map_index 文件(也存储在我的模型中作为“sitemap_index”启动一个新的分片 - 或 reset.2 3.b 如果地图未满,请从 mcache 中抓取 4.追加100 url xml结构 5.save/m缓存地图
我现在可以使用 /sitemaps/* 之类的 url 映射/路由添加处理程序
获取我的 * 作为地图名称并即时从 blobstore/mache 提供地图。
现在我的问题是这行得通吗?这是正确的方法还是好的开始方法?这是否会处理确保搜索机器人在用户更改其个人资料时更新的情况 - 可能通过正确设置更改频率? - 我需要更先进的系统吗:(?还是我重新发明了轮子!
我希望这一切都清楚并具有某种意义:-)
【问题讨论】: