2011-11-11 3 views
0

나는 asp.net 웹 사이트에서 일하고 있습니다. 일부 페이지에서는 데이터 테이블을 캐시로 저장합니다. 캐시 [ "dt"] = dt; 그리고 chree에서 가져 와서 그 페이지에서 원하는 것을 사용해주세요. 세션이 닫힐 때마다 global.asax 파일의 session_end 이벤트에서 세션을 지우고 싶다고 생각합니다. 캐시로 [ "dt"] = null; application_end 또는 세션 끝을 닫을 때 더 좋은 위치는 무엇입니까? session_end에서 닫으면 다른 사용자에게 영향을 줍니까? 명확한 도움이 정보를 제공해 주시기 바랍니다. 감사합니다정확한 이벤트 (global.asax) asp.net에서 캐시를 지우려면

답변

0

Cache에 데이터 테이블을 넣으므로 모든 사용자가 공유한다는 의미이므로 실제로 제거해야하는 유일한 시점은 모든 사용자가 공유한다는 의미입니다. 응용 프로그램이 종료되고 그 시점에서 모든 자원이 해제됩니다. 귀하의 응용 프로그램이 더 이상 실행되지 않습니다.

어쩌면 해야할지 /해야할 일은 데이터 테이블을 Session에 넣는 것입니다. 그게 원한다면, OnSession_EndGlobal.asax에 놓을 수 있지만, SessionEnd은 발사가 보장되지 않습니다. 또한 사용자가 로그 아웃 할 때 Session.Abandon()을 수행하면 모든 세션 객체가 지워집니다.

+0

나는 session_end evnt에서만 session.abandon() 메서드를 사용해야합니다. 세션 끝이 실행되지 않으면 세션을 어떻게 버릴 것입니까? – Ram

+0

@Ram 아니, session_end가 아니라면 무슨 뜻입니까? 사용자가 웹 사이트에 로그인해야하는 경우 로그 아웃 버튼을 클릭하면됩니다. 인증을 요구하지 않으면 Session.Abandon을 호출 할 필요가 없습니다. 왜냐하면 SessionEnd는 해당 사용자에 대해 Session에 저장된 모든 것을 지울 것이기 때문입니다. – Icarus

+0

대단히 감사합니다. 지금은 분명합니다. – Ram

1

애플리케이션 데이터, 세션 데이터 및 캐시의 개념을 잘못 이해했다고 생각합니다. 이 세 가지는 모두 다른 것입니다.

  • 응용 프로그램 데이터/상태는 응용 프로그램 범위에서 사용할 수있는 정보를 저장합니다. 즉, 모든 세션/사용자가 이러한 데이터에 액세스 할 수 있습니다.
  • 세션 데이터는 현재 세션 데이터에 대한 정보를 저장합니다. 세션의 지속 기간은 구성 파일에 지정할 수 있습니다.
  • 캐시는 자주 사용되는 데이터를 저장합니다. 그리고이 데이터는 매번 재생성하는 데 많은 비용이 듭니다.

귀하의 경우, 귀하가 캐시를 사용 중이므로이 캐시는 자주 사용되는 일부 데이터를 저장한다고 가정합니다. 이상적으로 정보가 변경되지 않는 한이 캐시는 항상 유효해야합니다. 따라서 캐시 권장 값을 최대한 길게 유지하는 것이 좋습니다.

+0

데이터를 세션에 넣으면 어떻게됩니까? 내가 evnenthouhh 한 사용자가 다른 세션에 영향을 미치지 못하게 생각하고 내가 session_end evnt 내가 생각하는 세션을 정리할 수 있도록 세션은 모든 사용자에게 특정 것입니다. 조언하십시오 – Ram

+0

예, 세션 상태가 다른 세션에 영향을 미치지 않습니다. 그리고 btw, 세션 상태를 사용하면 아무 것도 할 필요가 없습니다. 세션이 끝날 때 자동으로 지워집니다. – dip

관련 문제