nodejs Request 모듈 Cache-Control 질문입니다.

조회수 1224회

현재 아래 URL으로 정보를 크롤링 하고 있습니다.

https://project-team.upbit.com/api/v1/disclosure?region=kr&per_page=10

문제는 실제 홈페이지에 올라오는 글보다 크롤링 내용이 5분이나 늦은 경우가 발생하는데 찾아보인 서버측에 응답 헤더에 Cache-Control 설정이 되어있는 것을 확인하였습니다

그래서 Cache 된 정보를 받지 않기위해서 Request 모듈 요청 headers 에 아래와 같이 cache-control 옵션을 넣어 요청중입니다.

headers: {
  'cache-control': 'private,no-cache,no-store,must-revalidate,max-age=0',
  'pragma': 'no-cache',
  'expires': 0
}

그런데 여전히 지연문제가 발생중인데 설정한 cache-control 설정이 동작하지 않은 것으로 보여지는데 혹시 어떤 문제 인지 알수 있을까요?

아니면 Caching 되지않은 데이터를 요청하는 방법을 알려주시면 감사하겠습니다. 크롤링 너무 어렵네요 ㅜㅜ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 서버의 캐싱과 별개로, 완전히 같은 요청일 땐 클라이언트에서 이전 응답을 재사용하는 경우가 있습니다. Request 모듈도 그렇게 되어있는지는 확실하지 않지만요. 아마 응답 헤더에서 캐시를 허용해서 그런것 같긴 합니다만...

    url += "&time=" + (new Date()).getTime();
    

    이렇게 URL에 매번 변하는 쿼리스트링 하나를 추가해보세요.


    그나저나 'Cache-Control'은 왜 의도대로 작동하지 않는걸까요? 😒
    저도 늘 겪는 문제인데요. 누구 아시는 분이 알려줬으면 좋겠네요.

    혹시 모르니 'cache-control'을 'Cache-Control'로 바꿔보시겠어요?

    • time값 넣어서 요청해보도록 하겠습니다!! 대소문자 구분안한다고 하더라구요 찾아보니 그래도 대문자로 바꾸고 해볼게요 알 수 없는 사용자 2020.3.30 15:09

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)