缓存带来的不好之处 -- 如何解决自动更新

来源:互联网 发布:单片机各种线介绍 编辑:程序博客网 时间:2024/05/21 09:05

缓存的好处不用多说,可以想像,如果机器没有了缓存,那电脑的世界将会变成什么样的?

      昨天,在做自动更新的时候,测出来一个问题,明明我上传新文件的版本是 1.0.2.2,但客户下载到的是1.0.1.0 的,在本机测试所下载的版本是1.0.2.2 ,让同事测试 1.0.2.2,这么一来,可能是缓存造成的问题,于是就让(我现在出差)以前的同事,同学,现在留在公司的同事,三个人来做一下测试。首先我上传一个新的文件,让他们都下载,我也下载,得到的是同一个文件,然后从服务器上把这个文件给删除,他们还能下载,我不能下载,因为我是内部网,所以访问的直接是真实的地址,访问时告诉我,文件找不到。这就证明缓存起作用了。如果更新太频繁的话,不同区域内的客户所下载到的就一定不是同一个文件了,所以会造成,看是更新成功,实际更新的还是原来版本的错误,可这里有一点疑问?自动更新有个配置文件,只有这个配置文件变化时,客户端才会下载文件,配置文件的格式是 xml ,只要这个配置文件一变化,客户端就能检测到,调用自动更新,但上传的更新文件,一般是 dll和 exe 格式的,这两种格式在网络的缓存机制上有什么区别?这是值得我们去区分的。
        
       测试还在继续进行,过了大约15分钟后,朋友们都无法下载那个文件,哈哈,缓存失效了,为了测试缓存失效的时间,我们继续双做了一下测试,方法同上,准确测试出缓存失效的时间是15分钟,哈哈,自动更新的问题可以解决了,就是15分钟之前上传更新文件,然后再保存自动更新的配置文件问题从理论上解决

      但,我按照以上的方法进行维护自动更新,
     结果事实上不是如此,我在今天用自动更新的时候,且文件是昨天晚上上传的,一共上传5个文件,有4个已经变化了,还有一个没有变,这是为什么?
     看来测试还要继续进行有以下两种情况没有考虑到缓存是否会发生变化
      文件没有从服务器上删除的情况
      1.xml. 或 txt  格式的文件,这里如果检查文件还存在,缓存会不会继续保留之前的内容?
      2.dll . 或 exe 格式的文件,这里如果检查文件还存在,缓存会不会继续保留之前的版本?

20090607 下午
     测试结果:xml 与 dll 的更新时间相同,为什么自动更新配置文件一保存,客户端就发现有了更新?
     不管这个了,已经找到一个解决方案,具体方案请见评论中的解决方案二

     在这里要谢谢帮我测试的朋友,还有给我提建议的同事。虽然最后的解决方法是那么的不复会一提,但仍非常感谢,特别是张斌

20090625 下午续:
        使用解决方案二,从 6月7号到6.24 号自动更新除了网络状况不好的情况下没有造成因为缓存而更新到旧版本的事故,但好景不长,每次在上传的时候添加日期,这半个多月维护下来,服务器上光更新文件就占200多M,实在是一个让人害怕的数字,大家都知道Internet服务提供商都是有大小限制的,这样的作法是在极大的浪费空间,说了这么多好像全是废话,核心问题:如何解决,本人目前有三种解决方案
       1.在添加的时候手工删除旧版本
       2.在添加的时候用程序自动删除旧版本
       3.写一个小程序,根据文件名自动删除
(方法1)  手工删除不太现实,因为更新太频繁了,几乎每天要更新2-5次,况且要远程连接到主机,又要用肉眼去比较,找出过期的更新文件删除之,麻烦...
(方法2)  自动删除,不是不想,但不知道如何用命令去删除服务器上的文件,
(方法3)   这个操作就较为简单一点,想删除的时候,运行一下程序就行了

目前本人:使用1,来删除过期的更新文件

希望大家能再次提出宝贵意见,

更希望能得到另外一套完整的自动更新机制
能解决上述问题
能解决网络慢,下载更新文件失败的纠正方法