Microsoft MVP성태의 닷넷 이야기
웹서비스에서 캐시를 사용하고 싶습니다. [링크 복사], [링크+제목 복사],
조회: 16901
글쓴 사람
김용환 (70003431 at dreamwiz.com)
홈페이지
첨부 파일
 

jquery 를 이용해서 html에서 웹서비스를 이용하는 프로젝트를 하고 있습니다.
로그인해서 캐시에 데이타를 집어넣고 로그아웃때 지우는걸 하고싶습니다.
로그인페이지에서 로그인버튼을 누르면 웹서비스에서 체크한다음 캐시에 값을 넣어두고
요청마다 그 캐시의 값을 읽는게 하고싶습니다.

트리데이타를 위해 쿼리를 날리고 그 데이타를 재귀함수를 통해 다시 데이타테이블을 만들어서
그 데이타테이블을 데이타셋에 담아서 아래의 함수를 호출합니다.

        private void SetTreeData(DataSet ds)
        {
            DataTable dtCache = (DataTable)HttpContext.Current.Cache["tree"];
            DataTable dtTreeData = ds.Tables[0];

            if (dtCache != null)
            {
                if (!dtCache.Equals(dtTreeData))
                {
                    SetCache(dtCache, dtTreeData);
                }
            }
            else
            {
                SetCache(dtCache, dtTreeData);
            }
        }

        private void SetCache(DataTable dtCache, DataTable dvTreeData)
        {
            CacheDependency dep = new CacheDependency(Server.MapPath(@"/TreeData.html"));

            string sPath = Server.MapPath(@"/TreeData.html");
            FileStream fs = new FileStream(sPath, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);

            foreach (DataRow dr in dvTreeData.Rows)
            {
                sw.WriteLine(dr["li"].ToString());
            }
            sw.Flush();
            sw.Close();

            dtCache = dvTreeData;
            HttpContext.Current.Cache.Insert("tree", dtCache, dep, DateTime.Now.AddDays(1), TimeSpan.Zero);
        }

데이타를 읽어서 파일에 쓴다음 그걸 읽어서 트리에 뿌리고 있는데.
이걸 매번 수행해서 문제가 있습니다.
그래서 캐시에 넣어놓고 있다면 파일에 쓰는부분과 캐시에 넣는 부분을 하지 않고 싶은데...
잘 안되고 있습니다...

이게 완료되면 로그인후 캐시에 넣고 쓰는걸 해보려고 했는데...
현 상황으로 진행이 안될거 같습니다...
도움이 절실합니다 ㅠㅠ








[최초 등록일: ]
[최종 수정일: 10/14/2008]


비밀번호

댓글 작성자
 



2008-10-14 09시52분
음... ^^; 즉, 위의 코드가 동작이 안 된다는 것인가요?

보면,,, 뭔가 좀 이상하긴 한데요. SetTreeData에서 dtCache가 null 나온 경우, 그걸 SetCache(dtCache, dtTreeData);에 넘겨주고 있는데요.

Call by Ref와 Call by Value에 대해서 헷갈리시는 것 같습니다. 비록 닷넷이 기본적으로 Call by Ref로 참조형에 대해서 처리해준다고 해도, 역시나 넘어가는 것은 참조값에 대한 복사값일 뿐입니다. 즉, null을 넘기는 경우 그 null에 대한 복사본이 스택에 전달된다는 것이지요.

그로 인해, SetCache 안에서 dtCache = dvTreeData로 값을 넣었다고 해서, SetCache 함수 밖에 있는 dtCache 인자가 할당되어져 있는 것은 아닙니다. 그런 경우, 굳이 해야한다면 SetCache(ref DataTable dtCache, ...);와 같은 식으로 정의하셔야 합니다.
kevin25
2008-10-15 09시25분
답변 주셔서 감사합니다 ㅠㅠ
null 이 나온경우 if (!dtCache.Equals(dtTreeData)) 캐시데이타랑 넘어온 트리데이타랑 다르면
함수를 호출하게 만들었습니다.
캐시에 데이타가 없거나 데이타가 변경되었으면 트리데이타로 캐시를 만들려고 한건데...
찬찬히 다시 살펴보겠습니다...
코드를 떠나 처음 함수가 호출되어서 캐시를 생성했을때 지우지 않는이상 살아있긴 한게 맞는지 궁금해집니다 ㅡㅜ
kimyh
2008-10-15 11시28분
뭘 잘못했는지 알았습니다...
CacheDependency dep = new CacheDependency(Server.MapPath(@"/TreeData.html"));
이넘이 파일이 변하면 캐시를 날리는데...로직은 파일을 계속 고쳐서 그랬네요 ㅡㅡ;;
그래서 dep 부분을 null로 캐시생성을 했더니 캐시는 존재하는군요 ㅠㅠ
대신 데이타테이블과 데이타테이블의 비교가 안되네요...
될까? 하긴 했었는데...
if (!dtCache.Equals(dtTreeData)) 이부분이 비교가 되질 않는거 같아서 어째야할지
고민이 바뀌었답니다 ㅡㅜ
kimyh

... 16  17  18  19  20  21  22  23  24  [25]  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5321나그네4/14/202015584오타인가요? [2]
5320kiki...4/10/202018036C# Serial 통신 관련 질문 입니다. [5]
5319권대현4/10/202013461C++(UWP)Dll에서 C#(UWP)Dll 호출이 가능한가요? [1]
5318이승준4/9/202014530동영상 관련 업계 근황? 입니다. [1]
5317kskk...4/7/202016787OpenCV 이용 해상도 설정 질문 입니다.. [3]
5316윤현수4/7/202013217pipe 비동기방식 질문 [1]파일 다운로드1
53154/6/202014196dll파일 로드 원리? 부분에서 도움받고싶습니다. [3]
5314강성욱3/31/202016237메서드 내에서 await 2번 등장할 때의 이해 [11]파일 다운로드1
5313강성욱3/27/202013796await 2번 [1]
53121a2a...3/20/202013421Re raw data write 질문 관련 [1]파일 다운로드1
53111a2a...3/20/202014657Raw data write 관련 질문 [1]파일 다운로드1
5310아스파넬3/15/2020144171초에 5회 함수호출 제한 관련 질문입니다. [1]
5309하태3/11/202016339안녕하십니까. c# Winform UI 질문드리겠습니다! [3]파일 다운로드1
5308질문3/9/202015124Window XP SP3 32bit 환경(Window Update 모두 완료)에서 .Net Framework 4.0.3 으로 빌드된 .dll 파일 gacutil.exe 등록 관련 문의 [5]
5306개발자3/9/202014282C#을 통해 인터넷 접속 가능한 이더넷을 선택할 수 있는지요? [1]
5305JaeS...3/9/202013479RAW파일 생성 질문드립니다 [8]파일 다운로드1
5303궁금하당2/27/202016376C#에서 C++ DLL읽기 (아래 글쓴이) [1]
5302궁금하당2/27/202018640C#에서 C++ DLL호출 ('PInvokeStackImbalance') [4]파일 다운로드1
5301질문합니...2/27/202013492소켓 대량 데이터 디자인 문의 [1]
5300nals...2/27/202014146vs2013에서 BinaryFormatter Serialize 후 vs2015에서 Deserialize시 예외 발생 [3]파일 다운로드1
5298질문2/26/202016221.lic 파일에 대해 질문 있습니다. [9]
5297임한승2/26/202012788vs2013에서 BinaryFormatter Serialize 후 vs2015에서 Deserialize시 예외 발생 건 [1]파일 다운로드1
5295나그네2/25/202014813클라이언트 PC 정보 조회관련.. [2]
5294닷넷초보ㅠ2/25/202015433윈폼으로 socket통신프로그램 만든후 release로 디버깅한 실행파일을 다른컴퓨터에서 실행할때 반응이없어요 [1]
5293탱코2/21/202014839검색을 하고 싶은데 어떻게 검색을 해야 할 지 모르겠습니다. [1]
5292아부리2/19/202014332XingApiNet 관련 질문 [3]
... 16  17  18  19  20  21  22  23  24  [25]  26  27  28  29  30  ...