2011-05-06 2 views
0

그래서 사용자가 내 페이지를 방문 할 때 페이지와 상호 작용하는 방식에서 저장하려는 특정 데이터가 있습니다. 이 데이터는 유지되지 않으므로 최선의 방법을 찾아 내려고합니다.MVC 2에 사용자 데이터를 저장하십시오.

예를 들어, 그들은 내 페이지에 로그온하고 javascript/google 맵을 통해 위치 정보를 얻습니다. 세션에 저장해야합니까? 나는 또한 자바 스크립트를 통해 그들의 IP를 받고있다. 해야 할 때마다 자바 스크립트 쿼리를 만들어야하나요? 아니면 세션에도 저장해야합니까?

캐시하는 것이 세션에 물건을 저장하는 것보다 낫습니까? 이 모든 내용을 model에 넣어야 캐시에 model을 넣은 다음 Guid을 사용하여 캐시에서 올바른 사용자의 model을 다시 리터칭 할 수 있습니까? 수천 명의 사용자가 한꺼번에 페이지에 접속하면 비용이 많이 들지 않습니까?

사용자는 저장된 정보를 params로 수집하는 정보를 사용하여 데이터베이스에서 레코드 목록을 가져올 수도 있습니다. 이 목록은 때로는 다시 쿼리해야하지만 다른 경우에는 페이지에서 다시 정렬하면됩니다. 나는이 모든 것들을 질의하고 싶지는 않을 것이다. 그러나 캐시는 로그인 한 각 사용자별로 수천 개의 레코드를 저장할 수있을 것인가?

나는 MVC에서이 물건을 접한 적이 없기 때문에 약간의 지침을 사용할 수 있습니다.

감사합니다.

답변

2

사용자가 방문하는 과정에서 일부 사용자 데이터를 유지하려면 ASP.NET 세션, 쿠키 또는 데이터베이스와 같은 영구 영속성 매체를 사용할 수 있습니다. 나는 일반적으로 사용자 데이터를 json으로 직렬화되고 암호화되어 암호화 된 객체로 저장합니다. 따라서 퇴근하여 다시 방문하더라도 여러 방문에 걸쳐 데이터를 유지할 수 있습니다.

데이터 캐싱에 관한 한 많은 선택 사항이 있으며 ASP.NET은 쉽게 만들 수있는 멋진 기능을 제공합니다. 데이터를 캐시 할 때 memcached와 같은 외부 캐싱 서버를 설정하지 않으면 웹 서버의 메모리에 저장됩니다. 캐시 된 데이터는 공통 데이터 인 경우 여러 사용자간에 공유되어 낭비 캐싱을 제거 할 수 있습니다. 데이터가 오래되면 캐시가 자동으로 지워지도록 캐시 무효화를 설정할 수도 있습니다.

캐싱 할 데이터의 양은 캐싱 대상, 메모리에있는 개체의 수, 이러한 캐시 된 개체를 만드는 사용자 수 및 서버에서 사용할 수있는 메모리 양에 따라 다릅니다.

이상적으로 비용을 결정하기 위해 계산 해보는 것이 좋습니다.

+0

나는 세션을 계속 사용하고 데이터베이스에서 이러한 레코드를 다시 정렬/수집하려고 할 때마다 데이터베이스 호출을 수행한다고 생각합니다. 나는 당신이 거기있는 동안 각 방문을 기억할 사이트가 필요하지 않습니다. – slandau

+0

데이터가 작고 서버에 저장하지 않으려는 경우 브라우저를 닫을 때 클라이언트가 삭제 한 세션 쿠키에 저장할 수 있습니다. 주의해야 할 것은 작성한 각 쿠키는 각 요청과 함께 다시 보내 져야하며 클라이언트 측 대기 시간에 추가 할 수 있어야한다는 것입니다. – ctorx

관련 문제