我使用Django的默认站点地图应用程序实现了一个简单的站点地图类。由于执行时间很长,因此我添加了手动缓存:
class ShortReviewsSitemap(Sitemap):
changefreq = "hourly"
priority = 0.7
def items(self):
# Try to retrieve from cache
result = get_cache(CACHE_SITEMAP_SHORT_REVIEWS, "sitemap_short_reviews")
if result!=None:
return result
result = ShortReview.objects.all().order_by("-created_at")
# Store in cache
set_cache(CACHE_SITEMAP_SHORT_REVIEWS, "sitemap_short_reviews", result)
return result
def lastmod(self, obj):
return obj.updated_at
问题是Memcached最多只允许一个1 MB的对象。该磁盘大于1 MB,因此将其存储到缓存失败:>7 SERVER_ERROR object too large for cache
问题在于Django有一种自动的方式来决定何时应将站点地图文件分成较小的文件。根据the documentation:您认为启用缓存站点地图的最佳方法是什么?
所有这些似乎水平都很低,我想知道是否存在明显的解决方案...
最佳答案
50k不是硬编码参数。
您可以改用django.contrib.sitemaps.GenericSitemap类:
class LimitGenericSitemap(GenericSitemap):
limit = 2000
关于python - 在Django中缓存站点地图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2079786/