2009-09-04 2 views
1

나는 꽤 짜증나는 문제를 겪고 있으며, 작동시키기 위해 꽤 못생긴 해킹이 떠올랐다.ajax Couchdb 호출 및 IE (hta) 공격적인 캐시 관리

CouchDB 데이터베이스 (내부 회사 용)를 사용하여 Hta 응용 프로그램을 개발합니다. 문제는 데이터베이스 쿼리를 매우 적극적으로 캐싱하는 것으로 보이며 솔루션을 찾는 것은 어려웠습니다. 데이터베이스의 업데이트 된 데이터가 전체 앱이 다시 시작될 때까지 캐시에 이전 요청 결과가있는 브라우저에 나타나지 않습니다.

아, CouchDB (또는 해당 mochiweb 서버)는 알 수없는 GET 변수를 허용하지 않으므로 일종의 타임 스탬프를 추가하는 일반적인 해결책은 작동하지 않습니다.

나는 일종의 해결책을 찾았지만 저주합니다. 솔루션은 다음과 같습니다 최신 버전 번호

  • 만 열려있는 문서 (쉽고 좋은, 뷰에서 작동하지 않습니다) 각 읽기에 무작위로 하나를 200 개 포트를 듣고 앞으로 프록시로
  • 를 사용하여 아파치를 선택 질문. (그것은 추한 사람이다).

HTA는 다른 포트 (다른 ​​도메인의 경우에도 이상한 동작)에 대해 ajax 호출을 허용하므로 제대로 작동하므로 새 데이터가 나오지 않을 가능성이 1/200이지만 아직 나아졌습니다. 1/1, 나는 그걸로 살 수 있어요.

그래서 제가 묻는 것은 더 나은 해결책이 있습니까? 캐시 헤더를 수정하기 위해 mochiweb 서버를 해킹 할 수 있습니까? URL에 임의의 문자열을 추가하는 데 사용할 수있는 특별한 "알 수없는"키가 있습니까? 아니면 Hta에게 아무것도 캐시하지 말라고하는 방법이 있습니까 (앱에서 수백 대의 컴퓨터에서 작동하도록되어 있습니다).

답변

2

여전히보기 흉한하지만 현재 아파치 설정보다 약간 못 생겼지 만 아파치 재 작성 규칙을 사용하여 URL에 임의의 no_cache 속성을 설정할 수는 없습니까? 아파치는 그것을 버려서 couchdb가 그것을 보지 못하게 할 수있다.

+0

오, 멋진 아이디어입니다. 시도해 보겠습니다. 제대로 작동하는지 확인해보십시오. – Berzemus

+0

나는 재 작성 조건과 규칙을 고칠 때 정말 즐겁지는 않았지만 슬프게도 잘 작동한다. 고마워. – Berzemus

+0

당신은 아파치 서버가 필요하다면 아파치보다 가벼운 것을 사용해 볼 수도 있습니다. nginx는 꽤 가볍고 당신이 원하는 것을해야합니다. –