【问题标题】:How to recache a page from a management command?如何从管理命令重新缓存页面?
【发布时间】:2014-02-19 00:27:21
【问题描述】:

我遇到了一个问题,sitemaps.xml 运行时间过长导致搜索引擎超时。没有安装 memcached,所以我很快添加了一个 FileBasedCache,它愉快地解决了当前的问题,除了每个缓存生命周期的第一个请求。

站点地图每周更改一次,该事件由 cron 作业调用,该作业调用加载新数据的管理命令。因此,直接的想法是将缓存寿命延长至一周,并在 cronjob/management 命令运行时强制刷新和重新加载缓存。

但是如何做到这一点呢?

【问题讨论】:

    标签: django caching


    【解决方案1】:

    由于您似乎暂时没有在站点的其他地方进行缓存,因此以下内容应该清除整个缓存:

    import urllib2
    from django.core.urlresolvers import reverse
    from django.conf import settings
    from django.core.cache import cache
    
    sys.stdout.write('Rebuilding sitemap\n')
    cache.clear()
    sitemap = urllib2.urlopen('http://'+settings.HOST_DOMAIN+reverse('sitemap'))
    sitemap.read()
    

    然后我会使用 urllib2 向 yoursite/sitemaps.xml 发送一个请求,该请求应该重新缓存新页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2012-08-28
      • 2012-01-08
      • 2011-07-16
      相关资源
      最近更新 更多