이 프로젝트는 더 이상 사용되지 않습니다 . 동적 렌더링은 권장되는 접근법이 아니며 웹에서 렌더링에 더 나은 접근 방식이 있습니다.
이 시점에서 RenderTron은 적극적으로 유지되지 않습니다.
RenderTron은 웹 페이지를 즉시 렌더링하고 세리어링하도록 설계된 헤드리스 크롬 렌더링 솔루션입니다.
RenderTron은 PRWA (Progressive Web App)가 JavaScript를 렌더링하거나 실행하지 않는 봇에 올바른 컨텐츠를 제공 할 수 있도록 설계되었습니다. RenderTron은 독립형 HTTP 서버로 실행됩니다. RenderTron Renders는 Headless Chrome을 사용하여 요청한 페이지, PWA가 로딩을 완료하고 원래 요청에 대한 응답을 직렬화 할 때 자동 감지합니다. RenderTron을 사용하려면 응용 프로그램은 Middleware를 구성하여 RenderTron에 요청을 프록시할지 여부를 결정합니다. RenderTron은 웹 구성 요소를 포함한 모든 클라이언트 측 기술과 호환됩니다.
서비스가 시작되고 실행되면 차동 서빙 레이어를 구현해야합니다. 이는 사용자 에이전트를 확인하여 사전 사전이 필요한지 여부를 결정합니다.
이것은 RenderTron 서비스와 함께 사용할 수있는 미들웨어 목록입니다.
RenderTron은 Prerender.io Middleware 와도 호환됩니다. 참고 : 사용자 에이전트 목록은 다릅니다.
GET /render/<url>
render 엔드 포인트는 페이지를 렌더링하고 페이지 직렬화됩니다. 옵션은 쿼리 매개 변수로 지정됩니다.
mobile 기본값은 false 입니다. ?mobile 통과시켜 사이트의 모바일 버전을 요청할 수 있습니다.refreshCache : Pass refreshCache=true 캐시 된 렌더링 결과를 무시하고 요청을 아직 캐시되지 않은 것처럼 취급합니다. 새로운 렌더 결과는 이전 결과를 대체하는 데 사용됩니다. GET /screenshot/<url>
POST /screenshot/<url>
screenshot 엔드 포인트를 사용하여 페이지가 올바르게 렌더링되고 있는지 확인할 수 있습니다.
두 엔드 포인트는 다음 쿼리 매개 변수를 지원합니다.
width 기본값은 1000 뷰포트 너비를 지정합니다.height 기본값은 1000 뷰포트 높이를 지정합니다.mobile 기본값은 false 입니다. ?mobile 통과시켜 사이트의 모바일 버전을 요청할 수 있습니다.timezoneId 시간대 렌더링을 지정합니다. 추가 옵션은 POST 본문에서 JSON 문자열로 제공됩니다. 사용 가능한 옵션은 인형극 문서를 참조하십시오. type (기본값으로 jpeg ) 및 encoding ( binary 으로 이진) 매개 변수를 지정할 수 없습니다.
GET /invalidate/<url>
invalidate 엔드 포인트는 구성된 캐시 (메모리, 파일 시스템 또는 클라우드 데이터 스토어)에서 <url> 에 맞게 캐시를 제거합니다.
URL의 일부로 쿼리 매개 변수를 설정할 때 올바르게 인코딩되어 있는지 확인하십시오. JS에서는 이것이 encodeURIComponent(myURLWithParams) 일 것입니다. 예를 들어 page=home 지정하려면 :
https://render-tron.appspot.com/render/http://my.domain/%3Fpage%3Dhome
서비스는 페이지로드 이벤트를보고 페이지가로드 된 시점을 감지하여 미결제 네트워크 요청이 없으며 페이지가 렌더링 할 시간이 충분했는지 확인하려고합니다.
렌더링에는 10 초의 단단한 제한이 있습니다. 예산이 만료되기 전에 응용 프로그램이 잘 렌더링 되어이 예산에 도달하지 않도록하십시오.
헤드리스 크롬은 웹 구성 요소를 지원하지만 Shadow Dom은 효과적으로 직렬화하기가 어렵습니다. 따라서 웹 구성 요소에는 Shady Dom (Shadow Dom의 가벼운 심)이 필요합니다.
웹 구성 요소 v0 (더 이상 사용되지 않음)을 사용하는 경우 Shady DOM을 올바르게 렌더링 할 수 있어야합니다. 웹 구성 요소 v0을 사용하는 중합체 1.x에서 Shady Dom은 기본적으로 활성화됩니다. Shadow Dom을 사용하는 경우 rendertron 서비스로 요청을 지시 할 때 쿼리 매개 변수 dom=shady 설정하여이를 재정의하십시오.
웹 구성 요소 v1 및 webcomponents-lite.js 또는 webcomponents-loader.js 사용하는 경우 rendertron 서비스로 요청을 지시 할 때 쿼리 매개 변수 wc-inject-shadydom=true 설정하십시오. 이 렌더러 서비스는 필요한 폴리 플릴을로드하고 활성화하도록합니다.
초기 요청 된 URL의 상태 코드가 보존됩니다. 이것이 200 또는 304 인 경우 메타 태그를 추가하여 렌더링 서비스에서 반환 한 HTTP 상태를 설정할 수 있습니다.
< meta name =" render:status_code " content =" 404 " /> RenderTron을 설치하고 로컬로 실행하려면 먼저 RenderTron을 설치하십시오.
npm install -g rendertron기계에 Chrome이 설치된 상태에서 Rendertron Cli를 실행합니다.
rendertron복제 및 설치 종속성 :
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run build크롬의 로컬 인스턴스가 설치되면 서버를 로컬로 시작할 수 있습니다.
npm run start gcloud app deploy app.yaml --project <your-project-id>
RenderTron에는 더 이상 Docker 파일이 포함되어 있지 않습니다. 대신, Docker에서 실행 헤드리스 크롬을 배포하는 방법에 대한 인형극 문서를 참조하십시오.
서비스를 배포 할 때는 루트에 config.json 포함하여 구성 변수를 설정하십시오. 사용 가능한 구성 옵션 :
timeout 기본 10000 대상 페이지를 렌더링하는 데 사용되는 타임 아웃을 설정하십시오.port 기본 3000 렌더 트론 서비스를 실행하고 듣는 데 사용할 포트를 설정합니다. 참고 process.env.port가 설정되면 대신 사용됩니다.host 기본 0.0.0.0 rendertron 서비스를 실행하고 청취하는 데 사용할 호스트 이름을 설정하십시오. 참고 process.env.host가 설정되면 대신 사용됩니다.width 기본 1000 페이지 렌더링에 사용할 너비 (해상도)를 설정하십시오.height 기본 1000 페이지 렌더링에 사용할 높이 (해상도)를 설정하십시오.reqHeaders default {} - 모든 요청에 따라 대상 페이지로 전송하도록 추가 HTTP 헤더를 설정합니다.cache 기본 null Google 클라우드 filesystem 사용하여 Google 클라우드를 사용하여 Google Cloud에 배포하는 경우에만 사용하는 memory 클라우드에서 캐싱을 활성화하기 위해 datastore 로 설정cacheConfig 캐싱 옵션을 지정하는 객체 배열renderOnly 엔드 포인트를 특정 도메인에 대한 서비스 요청 만 제한합니다. 문자열 배열로 지정됩니다. 예를 들어. ['http://render.only.this.domain'] . 이것은 엄격한 접두사 일치이므로 사용될 정확한 프로토콜 (예 : HTTP, HTTP)을 지정하십시오.closeBrowser Default false true 브라우저가 각 페이지 렌더링 사이에 닫고 다시 열 수 있도록합니다. 일부 사이트는 URL을 지나서 URL이 렌더링 된 NULL 응답을 지나치지 않도록해야 할 수도 있습니다.restrictedUrlPattern Pattern Default null REGEX 패턴에 따라 일치하는 요청을 제한하도록 제한된 Pattern을 설정하십시오. cacheDurationMinutes Default 1440 만료 시간을 광산으로, 기본값을 24 시간으로 설정하십시오. 캐시 만료를 비활성화하려면 -1로 설정하십시오cacheMaxEntries 기본값 100 선택한 캐시 방법에 저장된 최대 항목 수를 설정합니다. 무제한 캐싱을 허용하려면 -1 로 설정하십시오. Datastore 캐싱 방법을 사용하는 경우이 값을 1000 초과하는 경우 쿼리가 너무 느리기 때문에 쿼리가 저하 될 수 있습니다. datastore 에서 더 큰 캐시를 허용하려면 이것을 -1 로 설정 하고이 삭제 항목과 같은 방법을 사용하여 데이터 저장소의 크기를 관리하는 것을 고려하십시오.snapshotDir default <your os's default tmp dir>/renderton 파일 시스템 전용 디렉토리 RenderTron 캐시 파일이 저장됩니다. 메모리 캐시를 지정하는 예제 구성 파일, 2 시간 만료 및 최대 50 개의 항목
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}헤드리스 크롬이 환경에서 실행되는 데 어려움을 겪고 있다면 Puppeteer의 문제 해결 안내서를 참조하십시오.