ASP.NET이 세션에서 항목을 제거하시겠습니까?
어떤 방법이 선호됩니까?
Session.Remove("foo");
Session["foo"] = null;
차이가 있나요?
차이가 있나요?
있어.Session.Remove(key)사전에서 항목(키 및 값 모두)을 삭제하는 동안Session[key] = null키에 값(null인 경우도 있음)을 할당합니다.이전 통화 후에는 키가 표시되지 않습니다.Session#Keys수집.그러나 후자 이후에도 키 컬렉션에서 키를 찾을 수 있습니다.
이것이 오래된 스레드라는 것을 알지만 확실히 고수합니다.Session["key"] = null훨씬 더 빠릅니다!몇 가지 테스트(InProc Session State에서)를 수행하여 1,000개의 항목을 연속으로 제거했습니다(시간 경과는 전체 1,000개의 항목에 대한 것이므로 한 항목에 대한 평균 시간을 1,000개로 나누십시오).
기존 항목 1000개 제거:
Session[key] = null; - 0.82380000000000009 ms
Session.Remove(key); - 59.960100000000004 ms
기존 항목이 아닌 1000개 항목 제거:
Session[key] = null; - 1.5368000000000002 ms
Session.Remove(key); - 0.6621 ms
500개의 기존 항목과 500개의 기존 항목 제거:
Session[key] = null; - 1.0432000000000001 ms
Session.Remove(key); - 33.9502 ms
다음은 첫 번째 테스트를 위한 코드입니다.
Session.Clear();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = new object();
Stopwatch sw1 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = null;
sw1.Stop();
Session.Clear();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = new object();
Stopwatch sw2 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
Session.Remove(i.ToString());
sw2.Stop();
같은 효과가 있습니다.저는 개인적으로 생각합니다.Session.Remove메소드는 프로그래머의 의도를 더 잘 표현합니다.
다음은 MSDN에 대한 설명서 링크입니다.
"Http 세션 상태.항목 속성:
속성 값 유형: 시스템입니다.물건
지정된 이름의 세션 상태 값 또는 항목이 없는 경우 Null 참조(Visual Basic에서는 없음)."
저는 Remove와 함께 가고 싶지만 차이점이 있는지 솔직히 말할 수 없습니다.해당 null 값에 대한 빈 키가 여전히 남아 있을 수 있지만 확실하지는 않습니다.제거는 의심의 여지가 거의 없으며 만약 그것이 당신이 원하는 것이라면 그것은 코드에서도 더 잘 읽힙니다.
가장 큰 차이점은 세션에서 읽는 방법입니다.
if(Session.ContainsKey["foo"]) { return Session["foo"]; }
또는
if(Session["foo"] != null) { return Session["foo"]; }
첫 번째 방법을 사용할 경우 값을 null로 설정할 수 없으므로 제거를 사용해야 합니다.
두 번째 방법을 사용하는 경우 값을 null로 설정할 수 있습니다.
언급URL : https://stackoverflow.com/questions/261920/asp-net-removing-an-item-from-session
'programing' 카테고리의 다른 글
| jQuery 테이블 정렬 (0) | 2023.08.01 |
|---|---|
| npm 패키지 목록에서 중복 제거되는 것은 무엇입니까? (0) | 2023.08.01 |
| 스위프트에서 던지는 것과 다시 던지는 것의 차이점은 무엇입니까? (0) | 2023.08.01 |
| Android의 선형 레이아웃 및 가중치 (0) | 2023.08.01 |
| 스프링 부트 2.0에서 기본 히카리프 Tomcat 풀을 교체하는 방법 (0) | 2023.08.01 |