개요

Google AMP Cache는 웹에 게시된 유효한 AMP 콘텐츠의 캐시된 사본을 제공합니다. Google AMP Cache에서 직접 콘텐츠를 제공하여 빠른 사용자 환경을 제공합니다.

Google AMP Cache를 활용하려면 AMP 캐시 URL 형식을 사용하여 캐시에서 직접 AMP URL에 액세스해야 합니다. 사용자가 캐시에서 AMP 콘텐츠에 액세스할 때마다 콘텐츠가 자동으로 업데이트되고, 콘텐츠가 캐시된 후 업데이트된 버전이 다음 사용자에게 제공됩니다.

AMP Cache URL 형식

AMP Cache URL 형식은 다음과 같은 구성요소로 구성됩니다.

구성요소 설명
하위 도메인 이름

Google AMP Cache에서 생성된 하위 도메인은 글자 수 제한 및 기술 사양에서 허용하는 경우 사람이 읽을 수 있으며 게시자의 자체 도메인과 매우 유사합니다. 가능한 경우 Google AMP Cache는 다음 방법으로 각 하위 도메인을 만듭니다.

  1. AMP 문서 도메인을 IDN (Punycode)에서 UTF-8로 변환
  2. 모든 ','(대시)를 \'(—
  3. 모든 점(점)을 쉼표(대시)로 대체합니다.
  4. IDN (Punycode)으로 다시 변환합니다.

예를 들어 pub.compub-com.cdn.ampproject.org에 매핑됩니다. 기술적 한계로 인해 사람이 읽을 수 있는 하위 도메인이 차단되는 경우에는 단방향 해시가 대신 사용됩니다.

콘텐츠 유형 콘텐츠 유형은 AMP HTML 문서의 경우, 글꼴의 경우 &;, Google AMP Cache는 이러한 콘텐츠 유형과 일치하지 않는 리소스에 대해 404 오류를 반환합니다(핵심 오류 참고).
선택사항입니다. 해당되는 경우 Google이 TLS (보안 HTTPS)를 사용하여 출처에서 콘텐츠를 가져와야 합니다. 존재하지 않는 경우 일반 HTTP를 사용하여 출처에서 콘텐츠를 가져옵니다.
URI 가져올 콘텐츠의 URI입니다. URI는 스키마를 포함할 수 없습니다. 즉, 'http://' 또는 'https://'는 포함할 수 없습니다.

하위 도메인 이름 찾기

일반적으로 Google AMP Cache URL의 하위 도메인 이름은 위에 설명된 단계를 사용하여 사람이 읽을 수 있는 원본 URL 변환이 됩니다. 그러나 실제로는 그렇지 않은 상황이 있을 수 있으므로 프로덕션에 즉시 사용 가능한 애플리케이션을 위해 Google AMP Cache URL을 검색하는 가장 좋은 방법은 Google AMP Cache URL API를 사용하는 것입니다.

비프로덕션 상황의 경우 Google AMP Cache에서 생성되는 하위 도메인 이름을 확인하려면 amp.dev에서 Google AMP Cache 사용 대화형 도구를 사용해 보세요.

TLS를 사용한 문서 요청 예

https://example.com/amp_document.html에서 가져온 AMP HTML 문서 (/c 접두사로 지정)에 대한 요청입니다.

https://example-com.cdn.ampproject.org/c/s/example.com/amp_document.html

/s/c 프리픽스를 따르므로 TLS를 사용하여 example.com에서 문서를 가져옵니다.

일반 HTTP를 사용한 이미지 요청 예

http://example.com/logo.png에서 가져온 이미지 (/i 프리픽스로 지정)에 대한 요청입니다.

https://example-com.cdn.ampproject.org/i/example.com/logo.png

/i 접두사 다음에 /s가 없기 때문에 Google은 TLS를 통한 HTTP가 아닌 일반 HTTP를 사용하여 example.com에서 이미지를 가져옵니다.

쿼리 매개변수 예

쿼리 캐시의 매개변수도 AMP Cache URL 형식에 포함될 수 있습니다. 다음은 매개변수가 있는 HTTPS 예입니다. https://example-com.cdn.ampproject.org/c/s/example.com/g?value=Hello%20World

Google AMP Cache 업데이트

사용자가 Google AMP Cache에서 AMP 문서를 요청하면 콘텐츠가 캐시된 후 다음 사용자에게 새로운 콘텐츠를 제공하기 위해 캐시가 자동으로 업데이트를 요청합니다. 이 모델을 사용하면 AMP 문서 업데이트가 자동으로 신속하게 전파되므로 업데이트 후 업데이트되지 않는 버전이 표시되는 사용자는 거의 없습니다.

캐시는 "stale-between-revalidate" 모델을 따릅니다. Max-Age와 같은 출처의 캐싱 헤더를 사용하여 특정 문서나 리소스가 오래되었는지 여부를 판단합니다. 사용자가 오래된 항목을 요청하면 이 요청으로 인해 새 사본이 가져오므로 다음 사용자는 새 콘텐츠를 가져올 수 있습니다.

게시자 사이트에서 생성되는 로드 양을 제한하기 위해 Google AMP Cache는 모든 문서를 15초 이상 새로고침하고 모든 리소스는 1분 이상 새로고침한다고 간주합니다. 게시자 사이트에서의 새로고침 및 로드 간의 최적의 균형을 위해 캐시를 조정하므로 이 수치는 향후 변경될 수 있습니다.

캐시 최적화 및 수정

Google AMP Cache는 최적화 및 수정을 다음과 같이 수행합니다.

  • 콘텐츠가 AMP 형식이며 모든 AMP 성능 목표를 충족하는지 확인합니다.
  • AMP 문서 외에도 이미지와 글꼴을 캐시합니다.
  • 브라우저 메모리 문제 및 낮은 응답성을 방지하기 위해 최대 이미지 크기를 제한합니다.
  • amp-img 태그를 통해 이미지의 전송 효율성을 개선하는 다음과 같은 다양한 변환이 있습니다.
    • 특정 메타데이터와 같이 보이지 않거나 알아보기 어려운 데이터 삭제
    • WebP를 지원하는 브라우저에서 GIF, PNG, JPEG 형식 이미지를 WebP로 변환하는 등 이미지를 더 모바일 친화적이고 작은 이미지 형식으로 변환합니다.
    • 요청에 Save-Data 헤더가 포함된 경우 이미지를 더 낮은 화질로 변환합니다.
    • 대체 크기 버전을 생성하고 srcset 속성을 추가하여 반응형 크기의 이미지 제공을 지원합니다.
  • 보안 채널 (HTTPS)을 통해 제공되며 최신 웹 프로토콜 (SPDY, HTTP/2)을 사용합니다.
  • AMP 문서를 정리하여 HTML 태그, 댓글 등을 잘못 기준으로 XSS 공격을 방지합니다.

위의 변환 시 Google AMP Cache는 'Cache-Control: no-transform' 헤더를 무시합니다.

HTML 정리

Google AMP Cache는 모든 문서를 다시 작성하여 파싱을 정규화합니다. 예를 들면 다음과 같습니다.

  • 모든 HTML 주석은 제거됩니다.
  • 태그 및 속성 이름은 소문자로 표시됩니다.
  • 속성 값은 일관되게 따옴표로 묶고 이스케이프 처리됩니다.
  • HTML5 void 요소를 제외한 모든 태그가 닫힙니다.
  • 태그 안의 공백은 삭제됩니다.
  • 텍스트가 이스케이프 처리됩니다.
  • 인코딩된 텍스트 문자는 UTF-8 등가 문자를 사용하여 간소화됩니다.
  • body에만 포함될 수 있는 요소가 body로 이동됩니다.
  • 아웃바운드 링크는 게시자 출처 대신 Google AMP Cache 출처에서 제공될 때 계속 작동하도록 절대적으로 구성됩니다.

미리 가져오기 태그 삽입

Google AMP Cache는 이전에 리소스를 로드하는 데 도움이 되도록 브라우저에 다양한 미리 가져오기 힌트 태그를 추가합니다. 예를 들어 <link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet’>는 다음과 같이 변경됩니다.

<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link href="https://fonts.gstatic.com" rel="dns-prefetch preconnect">