2013-08-06 3 views
0

javascript 변수에 ajax에서 반환 된 일부 데이터를 저장했습니다. 한 시간 후에이 변수를 무효화하고 싶습니다.자바 스크립트 변수가 만료 되었습니까?

이 문제를 처리 할 수있는 몇 가지 setTimeout 함수를 작성할 수는 있지만 최적이 아니라고 생각합니다.

또 다른 방법은 쿠키를 저장하고 만료를 설정하는 것이지만 오버 헤드가 필요하지 않을 수 있습니다.

이 상황을 좀 더 우아하게 처리 할 수있는 다른 방법이 있습니까?

답변

3

실제 변수가 실제로는 그 페이지가 열려있는 상태로 존재한다고 가정하면 모든 캐시가 수행하는 작업 만 수행하십시오. 타임 스탬프를 저장하고 확인하십시오.

var cache = { timestamp : null, data : null }; 

function setData(data) { 
    cache.data  = data; 
    cache.timestamp = new Date; 
} 

function getData(maxAge) { 
    if (/* compare cache.timestamp to now - maxAge */) { 
     return null; 
    } 
    return cache.data; 
} 
+0

그러나 실제 캐시는 얼마 동안 메모리를 해제합니까? – Bergi

+0

데이터가 만료되었을 때 데이터를 설정 해제하십시오. 캐시는 데이터가 만료 될 때 반드시 제거하지는 않지만 그렇게 할 수는 있습니다. 이를 위해서는 정기적 인 가비지 수집기가 필요합니다. – deceze

2

값이 만료되는 시점을 나타내는 변수를 유지하십시오.

var foo = "bar"; 
var foo_expires_on = new Date(new Date().getTime() + 60 * 60 * 5); // +5 hours 

deceze의 대답은보다 공식적인 (모나드) 구현입니다.

관련 문제