Django中配合Git交付信息强制客户端刷新缓存的方法

Django中配合Git提交信息强制客户端刷新缓存的方法

前言

如何配合GIT版本来刷新你的客户端资源缓存

utils/misc.py

import subprocess
from datetime import datetime

def get_git_changeset(absolute_path):
    repo_dir = absolute_path
    git_show = subprocess.Popen(
        'git show --pretty=format:%ct --quiet HEAD',
        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
        shell=True, cwd=repo_dir, universal_newlines=True
    )
    timestamp = git_show.communicate()[0].partition('\n')[0]
    try:
        timestamp = datetime.utcfromtimestamp(int(timestamp))
    except ValueError:
        return ""
    changeset = timestamp.strftime("%Y%m%d%H%M%S")
    return changeset

git show --pretty=format:%ct --quiet HEAD会拿到当前提交的unix timestamp,转换为日期形式

project/settings.py

from utils.misc import get_git_changeset

STATIC_URL = '/static/{}/'.format(get_git_changeset(BASE_DIR))

然后在配置里面读取该时间组合成url,达到不同URL请求会请求资源的目的