3

我为 css/js 使用 Eric Bidelman 的/HTML5Rocks cachebust.py 文件的修改版本。链接在这里

而不是像附加时间戳一样

.css?2012-07-30

我将变量修改为 -

cachebust = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))

所以它变成(例如)

.css?6SKD39SFJ3

他的原始版本似乎也没有删除日期,所以我不太确定这是一个“缓存控制”,但我想如果我可以自动剥离这 10 个字符,它会起作用。首先定位任何 js 文件(对于新文件),然后如果 js?(已经存在缓存控制),剥离现有的缓存控制

asset = re.search('\.(js")><\/script>', line)
if asset is not None:
  existing = re.search('\.(js?"', line)
  if existing is not None:
    line[i] = line.replace('.js?'STRING????'"', '.js"')
  lines[i] = line.replace('.js"></script>', '.js?%s"></script>' % cachebust)

对那个字符串的想法????应该是,或者如果这种方法不起作用?我是 python 新手,所以我只是在这里试验......

4

1 回答 1

1

您可以替换 3 行:

existing = re.search('\.(js?"', line)
if existing is not None:
    line[i] = line.replace('.js?'STRING????'"', '.js"')

和:

re.sub(r'\.js\?[-0-9]{10}">',r'.js?">', line)

输出:

>>> re.sub(r'\.js\?[-0-9]{10}">',r'.js?">', '<script type="blah" src="url/to/path.js?2012-07-02">')
'<script type="blah" src="url/to/path.js?">'

我使用了[-0-9]{10}代表 10 个数字字符和破折号的正则表达式。如果可以代表任意10 个字符,请使用:.{10}

于 2012-08-01T05:31:40.770 回答