当前位置:  开发笔记 > 编程语言 > 正文

如何在django中有效地提供大量站点地图

如何解决《如何在django中有效地提供大量站点地图》经验,为你挑选了2个好方法。

我的站点地图中有一个大约150K页面的站点.我正在使用站点地图索引生成器制作站点地图,但实际上,我需要一种缓存方式,因为在我的服务器上构建每个1000个链接的150个站点地图是残酷的.[1]

我可以用memcached缓存这些站点地图页面中的每一个,这是我在网站上的其他地方使用的...但是,这是很多站点地图,它将完全填充memcached ....所以这不起作用.

我认为我需要的是一种使用数据库作为缓存的方法,并且只在它们发生变化时生成它们(由于站点地图索引意味着只更改最新的几个站点地图页面,因为休息总是一样的.)[2]但是,尽管我可以说,我只能使用django的一个缓存后端.

如何在不杀死我的数据库或memcached的情况下为Google提供这些站点地图?

有什么想法吗?

[1]我将其限制为每个站点地图页面的1,000个链接,因为生成最多50,000个链接,就是没有发生.

[2]例如,如果我有sitemap.xml?page = 1,page = 2 ... sitemap.xml?page = 50,我只需要更改sitemap.xml?page = 50,直到它满了1,000为止链接,然后我几乎可以永远,并专注于第51页,直到它已满,永远缓存,等等.

编辑,2012-05-12:这仍然是一个问题,我终于放弃了Django的站点地图框架后使用文件缓存大约一年.相反,我现在使用Solr在一个非常简单的视图中生成我需要的链接,然后我将它们传递给Django模板.这极大地简化了我的站点地图,使它们表现得很好,截至目前我已经达到了大约2,250,000个链接.如果你想这样做,只需查看站点地图模板 - 这一切都非常明显.您可以在此处查看此代码:https://bitbucket.org/mlissner/search-and-awareness-platform-courtlistener/src/tip/alert/casepage/sitemap.py



1> dar..:

我有一个类似的问题,并决定使用django将站点地图文件写入静态媒体中的磁盘,并让网络服务器为它们提供服务.我打电话每隔几个小时重新生成一次站点地图,因为我的内容没有经常变化.但这取决于您的内容您需要多久写一次文件.

我使用了一个带有cron作业的django自定义命令,但是使用cron作业的curl更容易.

这是我如何使用curl,我有apache发送/sitemap.xml作为静态文件,而不是通过django:

curl -o /path/sitemap.xml http://example.com/generate/sitemap.xml



2> spidee..:

好的 - 我已经找到了更多关于这个的信息以及亚马逊在他们的600万左右的URL中做了些什么.

亚马逊只需为每一天制作地图并添加到地图中:

    新网址

    更新的网址

所以这意味着他们最终得到了大量的站点地图 - 但搜索机器人只会查看最新的 - 因为更新的日期是最近的.我理解人们应该刷新一张地图 - 而不是不止一次包含一个网址.我认为这是真的.但是,亚马逊绕过这个,因为站点地图更像是一个日志.一个网址可能会出现在后来的网站地图中 - 因为它可能会更新 - 但是谷歌不会看旧版的地图,因为它们已经过时了 - 除非它确实是一个重要的重新索引.这种方法很有意义,因为你所做的只是建立一个新的地图 - 比如新的和更新的内容的每一天,并在谷歌ping它 - 因此谷歌只需要索引这些新的网址.

这种日志方法是与代码同步 - 因为您只需要一个静态数据存储模型,它存储每个映射的XML数据.你的cron作业可以构建一个地图 - 每天或每周,然后将原始XML页面存储在blob字段中或者你有什么.然后,您可以直接从处理程序和索引映射提供页面.

我不确定别人的想法,但这听起来像一个非常可行的方法和负载关闭的服务器 - 相比重建巨大的地图只是因为几页可能已经改变.

我还认为,有可能将一周价值的地图压缩成一周的地图,将4周的地图压缩成一个月 - 所以你最终得到月度地图,当月每周的地图,然后是过去7天的地图.假设所有日期都保持不变,这将减少整理过程的地图数量 - 我考虑将一年中每天的365张地图减少到12.

以下是网站地图上的pdf以及亚马逊和CNN使用的方法.

http://www.wwwconference.org/www2009/proceedings/pdf/p991.pdf

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有