2010-07-20 5 views
1

Google Blobstore는 최근 BLOB에서 부분 바이트 범위를 제공하는 기능을 추가했습니다. 이 메소드가 호출되면 응답은 HTTP 206 (부분 컨텐츠) 상태 코드로 생성됩니다. App Engine은이 경우 Range 요청을 항상 제공한다고 가정합니다.Google blobstore 및 HTTP 206 응답

그러나 필자의 경우 많은 파일을 하나의 blob 항목에 묶었으며 각각의 바이트 범위를 알고 있습니다. 클라이언트 관점에서 볼 때 개별 파일을 나타내는 URL에만 액세스합니다. 뒤에서 blob 저장소에있는 ByteRange based serve method을 호출하여 파일을 제공합니다. 내 경우에는 HTTP 200이 더 적절한 응답이지만 앱 엔진은 항상 206을 반환합니다.

이 동작을 재정의 할 수있는 방법이 있습니까? 클라이언트가 다르게 서버가 여전히 덩어리의 일부만을 보내는의 볼 경우에도 있기 때문에 (즉, 200 대신 206을 반환?)

감사합니다, Keyur

답변

1

TBH (206)는 올바른 코드입니다.

기술적으로 응답 코드는 부분적으로 캐싱을 지원하고 활성화하는 데 사용됩니다. 범위 요청에 200 OK를 반환하면 전체 엔터티라고 (임시적으로) 간주되는 중간 프록시에 의해 부분 엔터티 만 캐시되고, 추가 요청에 대한 응답을 엉망으로 만들 것입니다. 항상 캐시에 미치는 영향을 고려해야하며, 웹 작업을 많이합니다.

미안 해요, 난 몰라 :

+0

내가 캐싱 의미를 이해하고 실제로 내가 여기에 200을 찾고 있었다 이유. 앞에서 언급했듯이 클라이언트는 범위 요청을하지 않습니다. 이 경우 범위 검색은 구현 세부 사항이며 클라이언트와 서버 간의 계약이 아닙니다. – Keyur

+0

아, 사과드립니다. :) – nathan