Fixed #10793 -- Stopped caching paginator instances in sitemap classes to prevent stale sitemaps. Thanks, gnosek, krzysiumed and adam_przybyla.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17468 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
538257b4ae
commit
75a9c8a5ef
|
@ -60,9 +60,7 @@ class Sitemap(object):
|
||||||
return obj.get_absolute_url()
|
return obj.get_absolute_url()
|
||||||
|
|
||||||
def _get_paginator(self):
|
def _get_paginator(self):
|
||||||
if not hasattr(self, "_paginator"):
|
return paginator.Paginator(self.items(), self.limit)
|
||||||
self._paginator = paginator.Paginator(self.items(), self.limit)
|
|
||||||
return self._paginator
|
|
||||||
paginator = property(_get_paginator)
|
paginator = property(_get_paginator)
|
||||||
|
|
||||||
def get_urls(self, page=1, site=None, protocol=None):
|
def get_urls(self, page=1, site=None, protocol=None):
|
||||||
|
|
|
@ -1150,3 +1150,18 @@ settings file to list all your applications explicitly.
|
||||||
This attribute was confusingly named ``HttpRequest.raw_post_data``, but it
|
This attribute was confusingly named ``HttpRequest.raw_post_data``, but it
|
||||||
actually provided the body of the HTTP request. It's been renamed to
|
actually provided the body of the HTTP request. It's been renamed to
|
||||||
``HttpRequest.body``, and ``HttpRequest.raw_post_data`` has been deprecated.
|
``HttpRequest.body``, and ``HttpRequest.raw_post_data`` has been deprecated.
|
||||||
|
|
||||||
|
``django.contrib.sitemaps`` bugfix with potential performance implications
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
In previous versions the Paginator objects used in sitemap classes were
|
||||||
|
cached and could result in stale sitemap indexes. Removing this cache causes
|
||||||
|
new Paginator objects to be created and the
|
||||||
|
:attr:`~django.contrib.sitemaps.Sitemap.items()` method of the
|
||||||
|
:class:`~django.contrib.sitemaps.Sitemap` subclass to be called during every
|
||||||
|
sitemap-related request.
|
||||||
|
|
||||||
|
If the :attr:`django.contrib.sitemaps.Sitemap.items()` method returns a
|
||||||
|
``QuerySet`` its length will be evaluated which may lead to extra database
|
||||||
|
queries. To mitigate the performance impact consider using the :doc:`caching
|
||||||
|
framework </topics/cache>`.
|
||||||
|
|
Loading…
Reference in New Issue