약간 더 큰 ASP를 작성한 사람은 세션이 실제로 유용하다는 것을 알고 있습니다. 그러나 세션이 어떻게 작동하는지 정말 알고 있습니까? 아마도 당신이 이해 한 후에, 당신은이 사랑의 증오 대상을 다시 사용하지 않을 것입니다. 대안으로 바꾸는 방법은 약간 번거롭지 만 장기 고려 후에는 그렇게해야합니다.
먼저, 고객이 개인적으로 소유 한 데이터 변수를 기록하는 데 사용할 수 있으며 시간 범위 내에서 사라지지 않을 수있는 세션의 이점에 대해 이야기 해 봅시다. 이것은 실제로 중요한 기능, 특히 구성원과 시스템에서 사용해야하는 기능입니다. 예를 들어, 회원의 로그인 계정, 시간, 상태 및 녹음 된 많은 실시간 데이터 (예 : 쇼핑 시스템은 사용자의 쇼핑 바구니에 제품을 기록 함),이 정보는 각 사용자의 개인 요구 사항이며 일반적으로 개발자는 개발자가 사용합니다. 세션 기록 처리.
그러나 ASP의 세션은 쿠키로 구성되며 서버는 세션에 기록 된 모든 정보를 쿠키 형태로 사용자의 브라우저로 전송합니다. 일반적으로 브라우저는 사용자가 링크를 클릭하고 서버에 다시 연결할 때 마다이 쿠키를 다시 전달할 때 마다이 쿠키를 저장합니다. 이것은 데이터의 양이 더 클 경우 전송 및 수집해야합니다. 메모리 등을 재구성합니다. 초기 조치. 이제이 기능을 사용해야한다고 생각할 수도 있습니다 물론 대안이 있습니다.
애플리케이션은 또한 임시 데이터를 기록하고 처리하는 데 능숙합니다. 응용 프로그램은 세션과 같지 않으며, 데이터를 사용자에게 전달하지 않으며 다음 번에 온라인으로 읽을 때까지 기다립니다. 서버의 메모리에 직접 기록됩니다.
응용 프로그램 객체가 공개되므로 가장 먼저 수행해야 할 일은 각 사용자의 공통 영역을 계획하여 각 사용자가 시뮬레이션 세션의 목적을 달성하기 위해 데이터를 기록 할 수있는 자신의 영역을 갖도록하는 것입니다. 지금하는 방법에는 두 가지가 있습니다.
1. 서버가 활성화되면 미리 사용자 메모리 공간을 초기화하고 할당하지만,이 접근법은 서버가 켜지 자마자 많은 리소스를 차지하지만 사용자가 온라인 할 때마다 할당하는 데 어려움이 있습니다. . 그러나이 방법을 사용하면 최대의 사람들이 활성화 되 자마자 초기화 되므로이 방법은 일반적으로 사용됩니다. 대화방과 같은 작은 프로그램.
2.이 방법은 대규모 애플리케이션에 더 적합한 것으로 간주되어야합니다. 이는 사용자가 처음으로 온라인으로 제공되는 경우에만이 사용자에게 할당됩니다. 이 두 시뮬레이션 세션 솔루션의 목적은 세션 리소스의 소비를 줄이는 것이지만 결국에는 여전히 대체 할 수 없습니다.
■ 첫 번째 계획
먼저 우리는 첫 번째 솔루션의 구현을 시작합니다.
초기화가 완료되었지만 사용 방법은 무엇입니까? 계정 및 로그인 시간과 같은 세션에 저장된 정보를 사용자가 로그인하는 응용 프로그램 객체로 변경하면됩니다.
| '사용하지 않은 공간을 찾고 있습니다 i = 1에서 응용 프로그램 (ClientMax) Application (user_status_ & i) = 0 인 경우 '사용자 임시 번호 세션 (인덱스) = i '잠금 응용 프로그램 응용 프로그램 .Lock '중고 상태로 설정하십시오 응용 프로그램 (user_status_ & i) = 1 '가변 데이터에 넣습니다 응용 프로그램 (user_account_ & i) = 계정 응용 프로그램 (user_logtime_ & i) = now () '잠금 해제 application.unlock 종료 끝 If 다음 |
사용자의 관련 변수 데이터를 얻으려면 다음과 같습니다.
| response.write (응용 프로그램 (user_account_ & session (색인)) |
세션을 사용하지 않는 것이 아니라는 것을 알 수 있습니까? 그렇다면 왜 세션이 위의 원본 코드에 존재합니까? 앞서 언급 한 바와 같이,이 대안은 항상 온라인으로 연결되는 것은 아닙니다. 현재, 우리는 사용자에게 실시간 숫자를 제공해야합니다. . 당신은 키가 있고 열쇠는 그것에 숫자가 있고 열쇠의 숫자를 사용하면 트레이너가 자신의 금고로 안내 할 수 있습니다. 이 방법에는 약간의 개선이 있지만 소규모 응용 프로그램에는 충분합니다.
■ 두 번째 계획
이전 솔루션과 관련하여 사용자 정의 번호는 세션을 사용하여 번호를 기록한다고 생각할 수 있습니다. 맞습니다. 사용하든 아니든 서버는 각 사용자가 자동으로 숫자를 할당하는 데 도움이 되며이 숫자는이 숫자와 같이 반복되지 않습니다. 이 번호 매기기는 세션이 확실히 할 행동이므로, 우리는 우리가 스스로 작성하는 번호 프로그램을 대체하는 데 사용하여 다른 노력을 절약하고 확장을 더합니다. 그러나 기본적으로 위의 첫 번째 솔루션은 여전히 사람의 수와 다른 작은 응용 프로그램을 제한하는 대화방과 같이 유용합니다.
웹 사이트에 매 초마다 수백, 수천 또는 심지어 수만 명이있는 웹 사이트가 있다면 이전 솔루션을 사용하는 경우 확실히 작동하지 않습니다. 서버가 활성화되면 10,000 명을 준비하는 데 10,000 명을 준비하는 데 도움이 될 것입니다. 서버가 활성화되면 320,000 K (320MB)를 차지합니다 나는 당신 자신의 512MB로 충분할 것이라고 생각합니다. 위의 숫자는 최소 숫자라고 가정합니다. 따라서 솔루션은 사용자 변수 공간을 동적으로 구성하고 사용자가 서버와 함께 온라인 상태 일 때 영역을 자르므로 사전에 거대한 메모리를 구성 할 필요가 없습니다.
두 번째 솔루션은 비교적 간단합니다. 첫 번째 솔루션에서 모든 것을 버릴 필요가 없습니다.
| '잠금 applicationApplication.lock'가변 데이터를 넣으십시오 응용 프로그램 (user_account_ & session.sessionid) = 계정 응용 프로그램 (user_logtime_ & session.sessionId) = now () '잠금 해제 application.unlock |
사용자의 관련 변수 데이터를 얻으려면 다음과 같습니다.
| response.write (응용 프로그램 (user_account_ & session.sessionid)) |
과거에는 세션이 자원을 먹기가 매우 어렵다고 말한 많은 책을 읽었으므로 사용하지 마십시오. 그러나 그 일이있을 때는 여전히 사용해야하며 책은 더 적절한 해결책을 가르치지 않았습니다. 이제 세션을 교체하는 방법을 이해하면 세션을 잘 활용하십시오! 아마도 항상 어려움을 겪고있는 효율성 문제는 많이 향상 될 수 있습니다!