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请求会请求资源的目的