在开发时遇到的一个问题就是js修改了,但是实际上浏览器还有缓存,导致修改不生效,此时手动去清缓存就很尴尬。可以使用一些小的技巧,在CSS和JS上加上版本号,这样每次请求都是不一样的,建议在开发环境中这样操作,因为会消耗更多的网络资源。在生产环境中,建议是拿一个文本文件,里面写一行能够有唯一标识版本信息的文字,然后通过配置文件去读取。再发版的时候,再去变更这个文本里的内容,这样就能够减小带宽的损耗,也能够保证缓存正确。

时间戳的方式

每次请求都去获取一个时间戳

静态文件的方式

在指定目录下放这么一个静态文件,文件内部写版本信息。

还是在获取url的那个UrlManager.py文件中:

  1. # _*_ coding:utf-8 _*_
  2. from application import app
  3. from common.libs.DataHelper import getCurrentTime
  4. import os
  5. class UrlManager():
  6. @staticmethod
  7. def builderUrl(path):
  8. config_domain = app.config['DOMAIN']
  9. return "%s%s"%(config_domain['www'],path)
  10. @staticmethod
  11. def buildStaticUrl(path):
  12. path = "/static"+path+"?ver" + UrlManager.getRealseVersion()
  13. return UrlManager.builderUrl(path)
  14. @staticmethod
  15. def getRealseVersion():
  16. ver = getCurrentTime()
  17. release_path = app.config['RELEASE_PATH']
  18. if release_path and os.path.exists(release_path):
  19. with open(release_path,'r') as f:
  20. ver = f.readline()
  21. return ver

对应获取时间戳的DataHelper.py文件:

  1. #_*_ coding:utf-8 _*_
  2. import datetime
  3. def getCurrentTime(frm="%Y-%m-%d %H:%M:%S:%f"):
  4. dt = datetime.datetime.now()
  5. return dt.strftime(frm)

image.png