2

解决 Web 缓存的 Python 脚本

web cache killer

源码地址

作用

  • 通过脚本,为文件中的 URL 添加版本号,解决移动端使用缓存,不显示最新效果的问题。
  • 添加后缀为「js」「html」「css」「png」「jpg」「jpeg」链接的版本号。

定位

  • vue 脚手架本身就自带这个功能,gulp 也有类似的功能。为什么要重复造轮子?
  • 因为 vue,gulp 等,需要 npm 下载各种依赖包。对于只有几个页面的微小型项目。为此添加脚手架性价比不高。
  • 本脚本不需要添加任何依赖。在 linux 和 mac 等自带 python 环境的系统中,可直接运行。简单便捷。
  • 本脚本可以放在 linux 中,结合 jenkins 发布系统等,进行自动化发布。

原理

  • 通过在 URL 链接中添加版本号,让浏览器当做全新的资源。绕过浏览器缓存,从服务器重新获取文件。以解决缓存问题。
  • 版本号添加的是,文件对应的 hash 值。故文件内容未发生变化时。URL 将不会发生变化。会复用浏览器中缓存的文件。合理利用缓存。
  • 工具只会添加目标文件夹中存在的文件,的链接。因为通常访问的外部链接,是第三方资源,不会轻易改变,故不存在缓存问题。

使用方法

注意,工具会在源文件中进行替换,注意备份源文件。否则会被污染。

python changeVersion.py '目前文件夹绝对路径'

代码解析

  • 递归遍历目标文件夹中的所有文件。
  • 用字典(或者叫对象)保存每个文件的「文件名」及「文件内容hash」。
  • 再次递归遍历目标文件夹中的所有文件。
  • 遍历文件内容,通过正则匹配里面所有的 URL,通过「文件名」查询前面保存的字典,是否有对应的 hash 值。
  • 如果有 hash 值,则证明该文件是内部文件,可能被改动,往 URL 中添加版本号,version=${hash}。以解决文件缓存问题。
  • 由于版本号是通过文件内容的hash,故文件内容未发生变化时。URL 将不会发生变化。会复用浏览器中缓存的文件。

关于缓存的友情链接


momo707577045
2.4k 声望603 粉丝

[链接]