Apache がデフォルトで最終変更時刻をヘッダーとして送信しているように見えることが明らかになりました。あなたが説明したように、JavaScriptメソッドを使用するだけでは、このヘッダーを取得することはできません。AJAX を使用してファイルを再ダウンロードし、再ダウンロードしたイメージの最終変更時刻 (ほとんどの場合、元のイメージと同じになります) を確認することにより、100% 信頼性が低く効率的な方法でそれを行うことができます。
AJAX呼び出しに小さなjQueryを使用しています...
<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()
、必要なすべてのファイルサイズをより効率的かつ確実に決定できます。