2011-04-08 10 views
0

페이지 캐시에 쿠키를 사용합니다. 괜찮습니까?쿠키가있는 페이지를 캐시하는 것이 좋습니까?

부분적으로 정적 인 내용을 표시하려면 데이터베이스와 많은 상호 작용을하고 싶지 않습니다. 쿠키를 사용하여 결과를 클라이언트의 컴퓨터에 저장하고 직접 데이터를 표시 할 수 있습니까?

데이터 신뢰성 및 무결성을 위해 데이터 용 crc를 만들고 해당 쿠키에 데이터와 함께 저장합니다. crc 계산 알고리즘이 하드 코드 (가정)이므로

아이디어에 단점이 있습니까?

+2

아마도 memcached를 대신 사용해야합니다. – GWW

+1

쿠키가 저장할 수있는 저장소 제한 (4KB) 때문에 이것이 좋은 아이디어인지는 확실하지 않습니다. –

+0

페이지를 서버 자체에 파일로 저장하고 새로 고쳐야 할 때 시간 제한을 관리 할 수있는 가능성도 있다고 덧붙여 야합니다. 내가 생각하기에 아마도 당신이하려고하는 것일 것입니다. – JRSofty

답변

3

쿠키는 각 요청에 따라 브라우저에서 서버로 전송되므로 캐싱에 쿠키를 사용해서는 안됩니다. 이것은 더 많은 대기 시간을 의미하는 더 많은 바이트를 보내는 것을 의미합니다. 따라서 실제로 쿠키를 사용하여 시스템을 느리게하고 도움을주지 않습니다. 웹 사이트에서 데이터를 캐시하는 올바른 방법은 localStorage (또는 다른 HTML5 저장소 클래스 중 하나)을 사용하여 캐시하는 것입니다.

+0

은 (는) localstorage가 광범위하게 지원됩니까? –

+0

@Prashanth, 예, 널리 지원됩니다. IE8과 IE9에서도 작동합니다. –

3

이것은 나에게 좋지 않은 생각입니다. 캐시 된 데이터가 사용자별로 또는 글로벌입니까? 글로벌 데이터의 경우 생성 된 전체 페이지를 서버 측에서 캐싱하고 이후 요청에 응답하는 것이 훨씬 낫습니다. 쿠키를 사용하면 각 요청마다 페이지를 동적으로 생성해야합니다.

사용자 별 데이터의 경우 페이지에 따라 다르지만 일반적으로 사용자 이름과 같은 것을 세션에 저장하려고합니다. 사용자 프로필 페이지와 같은 항목을 캐싱하는 것은 자주 발생하지 않으므로별로 도움이되지 않습니다.

두 경우 모두 각 요청에 대해 추가 정보를 모두 수신하는 데 많은 대역폭을 낭비하게되고 모든 요청에 ​​대해 동적으로 페이지를 생성해야합니다. 체크섬 알고리즘이 손상되어 계정 균형이나 사용자 이름과 같은 중요한 정보를 쿠키에 저장하면 보안에 영향을 미칩니다. 쿠키에 저장된 데이터를 무효화하려면 어떻게해야합니까? 데이터가 오래된 지 여부를 확인하기위한 모든 요청에 ​​대해 메커니즘이 있어야하며, 이는 목표를 저해합니다.

1

쿠키는 세션 ID 및 사용자 이름과 같은 작은 문자열을 저장하는 데 사용해야합니다.

정적 콘텐츠를 서버 (또는 데이터베이스)의 로컬 파일에 쓰고 유효 기간이 만료되기 전까지 정적 콘텐츠를 제공 한 다음 해당 프로세스를 반복하는 것이 좋습니다.

이 일에 매우 효율적 같은 memcached와 같은 서버를있다하지만 psuedocode은 동일합니다 : 당신이 알고있을 때

if (is_cached('recent_articles') { 
    return cached_content('recent_articles'); 
else { 
    save('recent_articles', $articles) 
    return cached_content('recent_articles') 
} 

그냥 일정 시간 후 내용을 만료해야합니다 또는 낡은 것 - 가장 의미가있는 것.

+0

제안 해 주셔서 감사합니다. 캐시 드 배 패키지로 전환하겠습니다. –

관련 문제