CURL은 요청을 캐시합니까?


19

이것은 꽤 긴 질문이므로 나와 함께하십시오.

AWS 인스턴스에서 로그인 한 Akamai 서버를 강조하고 싶었습니다. 그래서 ab 벤치 마크를 시작했습니다. 그러나 그들은 ~ 3MB 비디오 파일을 다운로드하는 것이 엄청나게 빨랐습니다. 당연히 나는 무슨 일이 일어나고 있는지보고 싶었습니다. 이것이 내가 파일을 얻기 위해 한 것입니다

컬 -v -o / dev / null

위의 ~ 5 초 안에 완료되었습니다.

다음으로 같은 명령을 다시 실행했습니다. 이번에는 ~ 200ms 안에 완료되었습니다! 당연히 내 직감은 파일이 어딘가에 캐시되고 있다고 말합니다.

내 질문 :

  1. curl은 파일을 캐시합니까? 그렇다면 무시할 수있는 방법이 있습니까?
  2. curl이 아닌 경우 우분투는 curl 아래에 캐시를 추상화합니까? 그렇다면 무시할 수있는 방법이 있습니까?
  3. 요구 사항이 주어지면 ab와는 별도로 벤치마킹 도구가있을 수 있다고 생각합니까?

감사합니다, Akshay

답변:


15

curl 클라이언트는 파일을 캐싱하지 않지만 원격 서버 네트워크는 그럴 수 있습니다. URL에 임의의 쿼리 문자열 변수를 추가하여 재현 할 수 있는지 확인하십시오.


답변 주셔서 감사합니다. 내가 사용하는 Akamai 서버가 쿼리 매개 변수를 허용하지 않으므로 임의의 쿼리 문자열을 추가 할 수 없습니다! (타임 스탬프 및 URL의 솔트 된 토큰 다이제스트에 의존하므로 오류가 발생합니다). 그러나 나는 동일한 경로 (필수적으로 여러 URL)에 대해 여러 개의 토큰을 생성 할 수 있었고 당신은 절대적으로 옳습니다. curl은 파일을 캐싱하지 않았습니다. 원격 서버였습니다. CDN을 간다! :)
Akshaya Shanbhogue 2016 년

6

뒤늦게 시도해보십시오.

curl -v -H "Cache-Control: no-cache"

그러면 웹 서버가 캐시하지 않도록 지시합니다. 헤더를 준수하도록 코딩되지 않은 경우 캐싱 아래의 레이어를 중지하지 않습니다.


0

이 curl 명령을 캐시 버스터 매개 변수와 함께 사용했습니다.

curl http://example.com/static/changing_file?_=$(date +%s)

date +%s1 초에 두 번 이상 URL을 호출하여 date +%s.%N나노초를 추가 하는 경우 에포크 이후 초를 인쇄합니다 .


0

당신은 추가 사용할 수있는 임의의 쿼리 문자열을 사용하여$RANDOM 환경 변수를 :

curl --location --silent "https://git.io/lsf-e2e?$RANDOM"

이것은 github raw 파일에서 나를 위해 일했습니다.


-2

아마 당신의 DNS는 이름의 해상도를 캐싱하고 응답 시간의 차이의 이유입니다.

이론 일뿐입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.