2010-08-04 1 views
2

다른 미디어 유형의 엄격한 하위 집합 인 미디어 유형을 설계했다고 가정 해 보겠습니다. 예를 들어, 내 미디어 유형은 application/vnd.example.foo+xml (이하 약어로 foo+xml)입니다. 이 미디어 유형은 application/xhtml+xml (이하 약칭 xhtml) 미디어 유형의 엄격한 하위 집합입니다. 기본적으로 내 미디어 유형 정의는 xhtml 미디어 유형 내의 특정 구성에 추가 처리 지침을 추가하거나 완전히 대체합니다. 예를 들어 어떤 foo+xml 문서에서 xpath //ul[@class='foo']/li[a]은 클라이언트에 의해 특정 방식으로 표시되어야하고 나머지 문서는 무시되어야합니다. 원본과 완전히 다른 처리 모델 xhtml 미디어 유형.Accept 헤더를 기반으로 다른 Content-Type을 사용하여 동일한 문서에 태그를 추가해도됩니까?

이 정보로 무장 한 서버는 이제 해당 유형의 표현을 만들기 시작할 수 있으며 클라이언트는 수락 헤더를 전달하고이 유형의 문서를 행복하게 사용할 수 있습니다. 둘 다 내 형식 정의에있는 처리 지침을 준수합니다. 그러나 그것은 사용자가 처리하는 방법을 알 수 있다고 가정 할 수없는 사용자 지정 미디어 유형입니다. 내가 가진

의 옵션이 있습니다 :

  • 클라이언트가 foo+xml 미디어 타입을 선호

    , 나는 그 미디어 유형으로 설정된 콘텐츠 형식으로 문서를 제공합니다. 클라이언트가 xhtml 미디어 타입을 선호하는 경우

이것은 일반적인 클라이언트가 foo+xml하지만 가능성이 xhtml 수 여전히 이해 무엇인지 모르는 것을 의미

  • 는, 나는 xhtml의 Content-Type 헤더와 같은 문서를 제공 내 문서를 처리하고, 다른 자원에 대한 링크를 따라 가며, 일반적인 방식으로 사용자에게 제시합니다. 마찬가지로, foo+xml의 의미를 알고있는 클라이언트는 문서를 추측하거나 인트로 스팅하지 않아도 실제로 처리 할 수있는 것처럼 보이는지 (예 : HTML 프로파일 링, 마이크로 포맷 등).

    1. 의 장점과 단점이 기술을 에코 선행 기술이 거기에 무엇입니까?
  • 답변

    1

    나는이 특정 문제에 대한 권위있는 토론을 본 적이 없지만 완벽하게 유효하다고 말할 수 있습니다. 이는 HTML 문서의 text/plain에 뷰 소스 작업을 효과적으로 수행하도록 요청하는 것과 유사합니다.

    클라이언트의 관점에서 보면 바이트가 다른 표현과 동일하다는 것을 알 수 없으므로 클라이언트에 장단점이있을 수 있는지 확인할 수 없습니다.

    까다로운 문제는 캐싱과 관련이 있다고 생각합니다. 두 표현을 모두 반환하기 위해 동일한 URI를 사용 하시겠습니까? 아니면 일반 URI에서 표현에 고유 한 URI로 리디렉션 하시겠습니까? 캐시에 바이트의 복사본이 하나 또는 두 개 있습니까? Content-type에 따라 달라 지도록 Vary 헤더를 설정해야합니까? 당신은 캐시에 두 개의 복사본으로 살 수 있습니까? 이 표현 중 하나 또는 둘 모두에 대한 업데이트를 수행해야합니까? 그렇다면 캐시는 두 복사본이 존재할 경우 모두 무효화합니까?

    +0

    Vary는 콘텐츠 유형으로 설정해야하며, 다른 ETag가 있어야합니다. 그렇지 않으면 캐시가 캐시 된 응답을 혼란에 빠뜨릴 수 있습니다 (일부 헤더는 중개자가 캐시 한 것의 일부이기 때문에). 나는 캐시에 두 개의 사본을 가지고 살 수있다. 그렇다. 그들은 아마 업데이트를 받아 들일 것이고, 네, 나는 무효화되어야한다고 생각한다.좋은 지적이야. – mogsie

    +0

    나는 최근에 API가 XSL 처리 명령을 제공하기 위해 애플리케이션 문서/원자 + XML과 동일한 문서를 제공하면서 브라우저로 연결하여 atom 문서를 application/xml (선호하는)으로 보내야한다는 것을 알았다. 원자를 선호하는 고객에게. 브라우저는 원자로 제공되는 원자 문서 스타일을 지정하지 않습니다. 그래, 나는 이것을 계속하고있다. :-) – mogsie

    관련 문제