我使用filemtime
在HTML指紋外部資源,如:PHP clearstatcache()函數的性能和參數解釋
<link rel="stylesheet" href="screen-<?=md5(filemtime('screen.css'));?>.css">
我注意到了有效的更新和filemtime
返回的時間戳之間的顯著延遲,所以我頂部添加了clearstatcache()
,這似乎解決了問題。但根據php manual:
,你只需要調用clearstatcache()函數,如果你是在相同的文件名 操作執行多個,並要求有關 特定文件中的信息不會被緩存。
所以我想知道如果我正確使用它。
此外,我擔心在每次調用時完全清除緩存的性能。任何人都可以告訴我它是否會導致服務器顯着下降?
clearstatcache
還接受另外兩個參數,但我不能確定它們的意義:
clear_realpath_cache是否清除真實路徑緩衝區或沒有。
名清除真實路徑和只有特定文件名 的統計緩存;僅在clear_realpath_cache爲TRUE時使用。
我不明白「realpath cache」的含義,我找不到任何關於它的信息。這有什麼意義調用clearstatcache
這樣:
clearstatcache(true,'/path/to/screen.css');
的意圖,明確只有涉及到具體的文件信息(因此減少的clearstatcache
「影響」)?
是否有你使用'md5(filemtime('screen.css'))'而不是'filemtime('screen.css')的原因' - 一個32位數的128位散列仍然只和底層的32位數字一樣好。 – jedwards
@jedwards只是爲了有數字和字母的冷靜;-)但你是對的,性能明智的 – Giona
你總是可以做一些像'dechex(filemtime('screen.css'))'甚至'str_pad(dechex (filemtime('screen.css')),8,'0',STR_PAD_LEFT)' - 只是一個想法 – jedwards