2012-08-01 43 views
2

我使用Eric Bidelman的/ HTML5Rocks cachebust.py文件的修改版本作爲css/js。 link is herePython - 刪除未知的10個字符的字符串

而是附加時間戳像

.css?2012-07-30 

的我修改變量 -

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

,使其成爲(例如)

.css?6SKD39SFJ3 

他的原始版本沒有似乎刪除這個日期,所以我不知道這是一個'緩存控制',但我想到如果我可以自動剝離這10個字符,它會起作用。首先針對任何js文件(對於新文件),然後如果js? (與cachecontrol已經到位),剝離現有cachecontrol什麼該字符串

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所以我只是嘗試在這裏...

回答

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}

+0

此作品非常感謝,測試過了 - 但是,我最終不需要它!意識到,後更新git掛鉤,沒有什麼需要被刪除,因爲緩存破壞字符串永遠不會在回購......哎呀 – ndreckshage 2012-08-03 22:33:33