欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

无法清除缓存 博客分类: javascript

程序员文章站 2024-03-16 15:04:22
...

修改系统时间所带来的2个坑。

1)tomcat不更新资源文件。

最近需要用JS做一个小功能。大致就是获取服务器的时间,然后判断用户填写的时间是否超时。所以,为了测试,需要频繁的改系统时间

然后在开发过程,发现浏览器的“缓存”(打了双引号,其实并不是缓存的原因)无论用什么办法都无法清除。后来经过分析,就是修改了系统的时间才导致了“缓存”无法清除(由于把系统时间修改的比当前要早,你修改过的文件,修改时间比tomcat webapp文件夹里面的时间更加早,估计tomcat就是判断修改时间来编译/或者放入最新的java/或者资源文件)。下面,还原一下车祸现场:

1.修改系统时间,当前正确时间为2017年9月19日,我们把系统时间调整为9月18日;

可以看到,tomcat服务器存放得并未和项目文件的同步(eclipse已经刷新了资源)。
无法清除缓存
            
    
    博客分类: javascript
 而Server中也显示已经同步。即使publish,tomcat下面的依然没有更新。


无法清除缓存
            
    
    博客分类: javascript
 从以上可以得出结论:tomcat是判断文件的修改时间来同步最新的文件的。(至少上面的现象说明如此)

2.那么我们看看浏览器那边的情况。

首先已经关闭缓存。所以浏览器是从服务器重新获取的js文件。

无法清除缓存
            
    
    博客分类: javascript


我在js文件中添加了一个alert。但是无论怎么刷新。这个alert都无法展现。 
无法清除缓存
            
    
    博客分类: javascript

原因就是tomcat中并没有更新你的文件。

这个烦了我一早上。一直不知道为什么缓存清除不了,以为是浏览器的缓存,结果是tomcat没有更新资源。

 

2)在js中无法请求https资源

在js中,如果有https的资源请求,那么会因为你修改了系统的时间,无法建立安全的https链接。

这是我在js中请求的https资源。

无法清除缓存
            
    
    博客分类: javascript

 

修改了系统时间,之后控制台会出现以下错误:


无法清除缓存
            
    
    博客分类: javascript
 我们可以打开百度首页,来让这个问题更加明显:


无法清除缓存
            
    
    博客分类: javascript
 
 

*tips:需要涉及到时间的功能,测试的时候尽量不要修改系统时间,可以直接传入时间作为参数(可以在这个网站,转化需要的timestamp),而不是偷懒直接修改系统时间,会发生各种问题。以上就是我遇到的。
 

  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 145.6 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 10.5 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 9.2 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 15.8 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 6.3 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 10.1 KB
  • 无法清除缓存
            
    
    博客分类: javascript
  • 大小: 36.6 KB