它表明,Apache似乎默認發送最後修改時間作爲標題。如你所描述的那樣,僅僅通過使用javascript方法就無法獲得這個頭文件。您可以通過使用AJAX重新下載文件並檢查重新下載的圖像的最後修改時間(幾乎總是與原始圖像相同)以非100%可靠或有效的方式來完成此操作。
使用jQuery的一點爲AJAX調用...
<img id="my_img" src="images/current.png" />
<!-- include jQuery - better done in the head -->
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script language="javascript">
var i = document.getElementById('my_img');
$.get(i.src,function(data,status,xhr){
// in the callback - after the ajax request completes...
var filetime = xhr.getResponseHeader('Last-Modified');
i.title = 'image created: ' + filetime; // don't care about formating now
})
</script>
此方法將僅在服務器發送正確Last-Modified
頭比圖像工作,它可能是不同的(雖然通常不會)以前加載,並通過重新下載您想要的時間戳的圖像導致額外的流量和請求。
如果可能 - 我認爲一個更好的解決方案是讓服務器通過一個小數據源公開文件的時間戳,也許發送JSON顯示每個文件的最後修改和其他元數據基於文件名作爲關鍵...這樣的服務器應該發送這樣的事情:
{
"images/current.png":{"last-modified":"2012-08-07","filesize":"1056 kb"},
"images/raisin.png":{"last-modified":"2012-08-04","filesize":"334 kb"},
"images/sultana.png":{"last-modified":"2012-08-02","filesize":"934 kb"}
}
,然後這些容易解析(使用JSON.parse()
)客戶端,並確定你需要的所有的filesizes - 更高效,更可靠。
你應該解釋如何在服務器(也許Apache)的可發送適當的頭,使之成爲完整的解決方案 - 那我就投你一票,〜) – 2012-08-08 08:15:06
Ajax HEAD在我看來會更合適 – mplungjan 2012-08-08 08:17:46
@BillyMoon - 老實說,我不知道這個答案,我不是服務器人。我只知道這往往會出現在AJAX響應頭文件中。 – Utkanos 2012-08-08 08:22:14