项目里有个需求是在页面新加了一个选框(本人使用的下拉框,如下图),在js里获取到字段值并赋值给相应的java对象,然后传到service层、dao层,最后入库。
由于浏览器有缓存,我修改的js并没有被加载,存库的时候新增的字段是null,也就是提交的时候js没有获取到值。浏览器会默认的缓存一些文件,如css、js、图片资源等,就是为了更快的响应页面。缓存机制是根据资源的URL来判断的,如果URL对应在本地的缓存资源有的话,就加载本地的资源,没有再去请求。
如果不想让浏览器缓存这些资源的话,可以在引入的时候,添加随机数参数或版本号控制,使请求的URL发生变化。修改方法如下:
1.添加随机数字
如:url="/generateFile/?activityType=" + activityType + “&t=” + Math.random()
缺点就是浏览器缓存失去意义,每次都动态加载
2.使用meta标签控制不缓存(html头信息)
如:
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
缺点这样所有的js 文件都不会被缓存。(这显然是不可取的,不建议使用)
3.根据版本号控制
设置全局变量,每次发布前版本号加1,url="/generateFile/??v=<%=v%>