如果对django sitemap不太熟悉,请阅读:
优化代码如下:
sitemap.py
from django.contrib.sitemaps import Sitemap class PeopleViewSitemap(Sitemap): priority = 1 changefreq = 'daily' # 每个sitemap显示的网址数量,默认为50000 不建议这样使用 limit = 1000 def items(self): return People.objects.all().order_by("id") def lastmod(self, obj): return obj.create_time class PoemsViewSitemap(Sitemap): priority = 1 changefreq = 'daily' # 每个sitemap显示的网址数量,默认为50000 不建议这样使用 limit = 1000 def items(self): return Poems.objects.all().order_by("id") def lastmod(self, obj): return obj.create_time
注意:一定要写order_by,否则django会有警告信息提示:
urls.py
from django.urls import path, include from django.contrib.sitemaps import views from .sitemap import * sitemaps = { 'shiren': PeopleViewSitemap, 'shici': PoemsViewSitemap, } urlpatterns = [ # 将sitemap进行分页 path('sitemap.xml', views.index, {'sitemaps': sitemaps},), # 单个sitemap的详细信息 path('sitemap-<section>.xml', views.sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
如果觉得sitemap还不够快,可以采用缓存策略
urls.py
from django.urls import path, include from django.contrib.sitemaps import views from django.views.decorators.cache import cache_page from .sitemap import * sitemaps = { 'shiren': PeopleViewSitemap, 'shici': PoemsViewSitemap, } urlpatterns = [ # 将sitemap进行分页 path('sitemap.xml', cache_page(86400)(views.index), {'sitemaps': sitemaps},), # 单个sitemap的详细信息 path('sitemap-<section>.xml', cache_page(86400)(views.sitemap), {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
还没有留言,还不快点抢沙发?