在开发时遇到的一个问题就是js修改了,但是实际上浏览器还有缓存,导致修改不生效,此时手动去清缓存就很尴尬。可以使用一些小的技巧,在CSS和JS上加上版本号,这样每次请求都是不一样的,建议在开发环境中这样操作,因为会消耗更多的网络资源。在生产环境中,建议是拿一个文本文件,里面写一行能够有唯一标识版本信息的文字,然后通过配置文件去读取。再发版的时候,再去变更这个文本里的内容,这样就能够减小带宽的损耗,也能够保证缓存正确。
时间戳的方式
静态文件的方式
在指定目录下放这么一个静态文件,文件内部写版本信息。
还是在获取url的那个UrlManager.py文件中:
# _*_ coding:utf-8 _*_
from application import app
from common.libs.DataHelper import getCurrentTime
import os
class UrlManager():
@staticmethod
def builderUrl(path):
config_domain = app.config['DOMAIN']
return "%s%s"%(config_domain['www'],path)
@staticmethod
def buildStaticUrl(path):
path = "/static"+path+"?ver" + UrlManager.getRealseVersion()
return UrlManager.builderUrl(path)
@staticmethod
def getRealseVersion():
ver = getCurrentTime()
release_path = app.config['RELEASE_PATH']
if release_path and os.path.exists(release_path):
with open(release_path,'r') as f:
ver = f.readline()
return ver
对应获取时间戳的DataHelper.py文件:
#_*_ coding:utf-8 _*_
import datetime
def getCurrentTime(frm="%Y-%m-%d %H:%M:%S:%f"):
dt = datetime.datetime.now()
return dt.strftime(frm)