2009-11-29 6 views
0

Apache 서버에는 요청을 받고 거기에서 이미지를 생성하는 PHP 서비스가 있습니다. 내가하고 싶은 일은 생성 된 이미지를 생성 한 후에 클라이언트의 브라우저가 아닌 내 서버에 생성 된 이미지를 캐시하는 것입니다. 따라서 특정 매개 변수가있는 이미지가 이미 생성되고 누군가가이를 요청하면 내 웹 서버는 생성 된 이미지를 생성하는 대신 캐시 된 이미지를 반환합니다. 새로운.Apache 서버 캐시 이미지

내가 수동으로 서버에 생성 된 이미지를 저장할 수 있고 각 요청이 존재하는지 확인한 다음 만료 된 이미지를 제거하기 위해 cron 작업을 실행하지만 더 효율적인 방법을 찾고 있습니다.

감사합니다.

답변

1

이미 가장 효율적인 방법을 언급했습니다. 그것을 디스크에 보관하십시오. 아마도 memcache와 같은 것을 사용할 수 있고 memcache에 저장 한 다음 memcache에 일정 시간이 지나면 자동으로 만료되도록 설정할 수 있습니다.

+2

@nigative, 기본적으로 memcached에 대한 설명서를 읽고 몇 가지 테스트를하는 것이 좋습니다. 기본적으로 최대 개체 크기는 이미지보다 작은 1MB입니다. http://dev.mysql.com/doc/refman/5.0/en/ha-memcached-faq.html –

+0

그래서이 경우에도 PHP 코드에서 모든 것을 처리해야합니다. 요청 문자열에서 키를 생성하고이 키에 대한 레코드가 memcache에 있는지 확인한 다음 해당 키가 있으면 반환하고 그렇지 않으면 새 이미지를 생성하고 키를 memcache에 저장 하시겠습니까? –

1

당신이 말했듯이, 그것을 디스크에 저장하고 클라이언트에게 다시 읽어주십시오. ID.dext와 ID.date를 가질 수 있습니다. 여기서 ID.date에는 유닉스 (unix) 시간으로 만료일이 있습니다. 그러면 ID.date에있는 내용과 time()이 ID.date보다 큰 경우 비교 한 다음 두 파일을 삭제하고 이미지를 다시 생성하십시오.

+2

ID.date가 필요하지 않습니다. 파일을 만든 날짜를 얻기 위해 파일을 stat()하기 만하면됩니다. –

1

이미지를 생성하는 방법에 따라 mod_cache을 사용하여 캐싱을 수행 할 수 있습니다.

+0

서버가 아닌 브라우저 (HTTP 헤더)의 페이지를 캐시하는 mod_expires와 비슷합니다. –

+1

오, 이런. 한 가지를 생각하고 다른 것을 입력/연결했습니다. 실제로 mod_cache 제안을 의미하며 편집 할 것입니다. – Amber