2011-03-29 3 views
0

최근에 본 프로필 목록을 쿠키에 저장하려고합니다.
사람들이 게임 캐릭터 ID (World of Warcraft)를 입력하고 캐릭터의 프로필을 볼 수있는 사이트가 있습니다.
문자 ID는 이름 (유니 코드, 최대 15 자), 서버 이름 (유니 코드, 최대 25 자) 및 영역 (2 자, 라틴 -1)로 구성됩니다.
모든 브라우저가 유니 코드 쿠키와 호환되지 않기 때문에 쿠키에 최근에 본 문자를 최대 5 개까지 저장하고 값을 URL 인코딩합니다.원시 데이터를 쿠키에 저장하십시오 - 좋은 생각입니까 아니면 나쁜 생각입니까?

이렇게하면이 쿠키의 길이를 500 자 위로 올릴 수 있습니다.

질문 :이 합리적인 접근 방법입니까? 여기에 내가 평가 해 주길 바라는 몇 가지 다른 해결책이 있습니다.

  1. characterId가 데이터베이스에 정의 된대로 저장하십시오. 장점 : 작은 쿠키 크기, 단점 : a) 데이터베이스에서 문자를 제거 할 수 있습니다 (데이터베이스는 업데이트 속도를 높이기 위해 캐시에 불과합니다). b) 데이터베이스가 다시 색인화 될 수 있습니다.
  2. 저장소 이름 + 서버 + 영역 해시를 데이터베이스에서 해시로 찾습니다. 단점 : a) 다시 캐릭터를 데이터베이스에서 삭제할 수 있습니다. 장점 : 다시 색인을 생성합니다.
  3. 사용자가 계정을 만들어 거기에 저장해야합니다. 단점 : 아무도 계정을 만드는 것을 좋아하지 않으며 나는 이것을하지 않습니다.

머리카락을 나눠주고 현재 솔루션 (쿠키에 URL 인코딩 된 목록 저장)이 충분합니까?

편집 : 그것은 "최근 문자"가 삭제됩니다 경우 목록, 그냥 편의를 위해 떨어져 있음을 유의하는 것이 중요하다 - 그것은 전혀 문제가되지 않습니다 (이 일부 응용 프로그램에서 '최근 파일'에 가깝다) .

답변

0

현재 솔루션에 문제 (또는 제한 사항)가없는 경우 그대로 유지합니다. 전체 문자를 저장하고 해당 데이터를 표시하면 데이터가 오래된 것일 수 있습니다.

ID를 쿠키에 저장하고 일부 서버 측 로직을 사용하여 ID 목록에서 사용 가능한 문자를 반환합니다. 데이터베이스에없는 ID는 다시 ID 목록에서 표시 및 표시되지 않고 건너 뛸 수 있습니다.

+0

글쎄,이 경우 이름 + 서버가 문자의 원시 ID이기 때문에 데이터가 구형이 될 가능성이 가장 낮습니다. 더 이상 식별되지 않습니다. –

0

개인적으로 ID를 쿠키에 저장하고 나머지 데이터는 데이터베이스에 저장하는 것이 좋습니다. 사용자 세션 중에 데이터를 삭제할 수있는 경우 사용자 세션 용으로 새 테이블을 만들고 (해당 session_id 사용) ID를 쿠키에 저장합니다. 해당 테이블에 datetime을 넣고 주기적으로 (cron 작업에서와 같이) x 일보다 오래된 레코드를 삭제하십시오.

관련 문제