2011-04-21 4 views
1

가능합니까? 이제 jquery의 도움으로 .php 파일에 연결하여 마지막으로 수정 한 시간을 확인하고 이전과 같지 않은 경우 메시지를 검색합니다. 자바 스크립트에서 가능하다면 많은 리소스를 절약 할 수 있습니다.자바 스크립트로 파일의 마지막 수정 시간을 찾을 수 있습니까?

감사합니다.

+0

jQuery로 가능하면 일반 Javascript에서 가능합니다. jQuery로 수행 한 작업을 공유 할 수 있습니까? – Jonathan

+0

그러나 클라이언트는 실제로 php 파일을받지 못합니다. 실제로는 해당 파일을 실행 한 출력을받습니다. 나는 클라이언트가 이것을 결정할 수 있다는 나의 의심을 가지고 있지만,이 질문을 관심과 함께 보게 될 것이다. –

+0

@Jonathan : jQuery의 ajax를 사용하고 .php 파일을 사용합니다. –

답변

1

짧은 답변 :이 방법은 없습니다하지만 AJAX + 서버 측 스크립트 (귀하의 경우, jQuery를가 + PHP)

되는 클라이언트의 컴퓨터에서 실행됩니다 자바 스크립트 클라이언트 측 스크립트, , m 시간 확인을 원하는 파일이 서버에 있다면 AJAX와 서버 측 스크립트를 사용하는 것이 옳다. 다른 방법으로는 효과가 없습니다.

m-time을 확인하려는 파일이 클라이언트의 컴퓨터에있는 경우 운이 좋지 않습니다. Javascript는 의도적으로 클라이언트 파일에 액세스하지 못하도록 설계되었습니다. 그러나 클라이언트 컴퓨터에서는 인 쿠키에만 액세스 할 수 있습니다. 브라우저 (JavaScript가 아님)가 작업 환경에 쿠키를로드하기 때문입니다.

+1

이것은 더 이상 사실이 아니며, HTML5의 일부인 새로운 FileReader API로 로컬 파일에 액세스 할 수있다. 당신은 당신을 위해 파일을 선택하는 사용자가 필요하지만, 당신은 단지 시스템 주위를 스니핑 시작할 수 없습니다. –

+0

아, 그래. 코더가 그러한 파일의 메타 데이터를 검사한다는 것은 나에게 발생하지 않았습니다. – JellicleCat

0

HTTP ETag 헤더를 사용하여 페이지가 변경되었는지 확인할 수 있습니다. 첫 번째 응답에는 ETag가 있고 클라이언트는 다음 요청에이 응답을 사용합니다. 페이지가 수정되지 않은 경우 PHP 서버 측 코드에서 304를 보냅니다.

http://en.wikipedia.org/wiki/HTTP_ETag

11

서버가 정확한 Last- 해당 파일의 헤더를 수정했습니다.

var getMTime = function(url, callback) { 
    var xhr = XMLHttpRequest(); 
    xhr.open('HEAD', url, true); // use HEAD - we only need the headers 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhr.status === 200) { 
     var mtime = new Date(xhr.getResponseHeader('Last-Modified')); 
     if (mtime.toString() === 'Invalid Date') { 
     callback(); // dont want to return a bad date 
     } else { 
     callback(mtime); 
     } 
    } 
    } 
    xhr.send(); 
}; 

getMTime('url here', function(mtime) { 
    if (mtime) console.log('the mtime is:' + mtime.toISOString()); 
}); 
+0

'var xhr = XMLHttpRequest();'가 크롬에서 나에게 실패 했으므로'$ .ajax'를 사용하여이 작업을 수행했다. 약간의 수정 만 필요로하는 유용한 대답을 +1하십시오. – Maslow

관련 문제