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

