예, 일반적으로 캐시를 일부 방법으로 제한하는 것이 좋습니다. 일부 캐시는 크기가 고정되어 있고 캐시 크기가 초과되면 이전 내용이 제거됩니다. 이 크기는 항목 수 또는 디스크 공간의 크기 일 수 있습니다. 일부 캐시에는 각 항목에 대해 TTL (또는 모든 항목에 대해 동일한 TTL)이 있으므로 항목이 특정 시간 후에 만료됩니다. 일부 캐시는 만료되지 않습니다. 아마도 첫 번째 장소에서 캐시 될 수있는 가능한 항목의 수에 의해 크기가 한정되어있을 것입니다. 이러한 접근법 중 어느 것도 유효하지만 일부는 다른 시나리오보다 특정 시나리오에 더 적합 할 수 있습니다.
"신선함"개념은 아마도 제가 생각하기에 접근법 일 것입니다. 그것은 TTL과 같습니다. 기본적으로 캐시 항목이 살아갈 시간을 설정하려고합니다. 캐시 데이터와 함께이 캐시 시간을 저장 한 다음 캐시 데이터를 읽을 때마다 캐시 시간을 확인하십시오. 만료일이 지난 경우 해당 캐시 파일을 삭제하고 API에서지도 데이터를 다시 검색하고 캐시 할 수 있습니다. 개별적으로 날짜를 저장하고 응용 프로그램에 고정 수명을 하드 코딩하거나 구성하지 않으려면 파일 작성 시간을 읽는 것만으로도 뭔가를 할 수 있습니다.
업데이트는 의견을 해결하기 : 나도 전에 파일 이름과 URL을 해싱 사용했습니다
. 충돌 가능성이 있음을 알고 있어야합니다 (해시 알고리즘 및 데이터 집합에 크게 의존 함). 또한 URL을 많이 사용하는 경우 해시 알고리즘의 성능도 중요 할 수 있습니다.
특히 URL이 많지 않은 경우 캐시 메타 데이터를 텍스트 파일에 저장하는 것이 좋습니다. 당신은 그 텍스트 파일을 어떻게 업데이트하는지 조심하고 싶을 것이다. 조심하지 않고 적절한 동기화없이 여러 스레드에서 액세스 할 경우 쉽게 손상시킬 수 있습니다. 많은 양의 데이터가 있다면 고려할 수있는 또 다른 옵션은 데이터베이스를 사용하는 것입니다. 이 캐시 메타 데이터를 파일 (데이터베이스 또는 텍스트 파일)에 저장하면 파일 이름에 다른 체계를 사용하여 해싱 문제를 피할 수 있습니다. 예를 들어 16 진수 또는 36 진수로 증가시킬 수 있습니다.
다음에 앱을 실행하고 캐시 된 데이터를 가져 오는 대신 일주일에 한 번씩 정리 작업을하는 것이 중요하다면 AlarmManager를 추가하는 것만으로도 AlarmManager를 사용할 수 있습니다. –
답변 주셔서 감사합니다. 각 이미지와 관련된 ttl 값을 저장 하시겠습니까? 각 이미지를 API 호출에 사용 된 URL의 해시 값 다음에 명명 된 파일로 저장합니다. 해시 값과 ttl 타임 스탬프가있는 쌍 값을 txt 파일에 저장한다고 생각하십니까? 나는 우아한 해결책을 찾고있다. 감사! –
좋은 질문입니다. 답변에 대한 자세한 내용을 추가했습니다. – kabuko