Обратите внимание, что этот проект устарел . Динамический рендеринг не является рекомендуемым подходом, и есть лучшие подходы к рендерингу в Интернете.
Rendertron не будет активно поддерживать на этом этапе.
Rendertron - это безголовное решение для рендеринга хрома, предназначенное для рендеринга и сериала веб -страниц на лету.
Rendertron предназначен для того, чтобы ваше прогрессивное веб -приложение (PWA) обслуживает правильный контент любому боту, который не визуал или не выполняет JavaScript. Rendertron работает как автономный HTTP -сервер. Rendertron renders запрашивали страницы с использованием безголового хрома, автоматического определения, когда ваш PWA завершил загрузку и сериализует ответ обратно на исходный запрос. Чтобы использовать rendertron, ваше приложение настраивает промежуточное программное обеспечение, чтобы определить, следует ли прокси -запрос на rendertron. Rendertron совместим со всеми клиентскими технологиями, включая веб -компоненты.
После того, как вы получите сервис, вам нужно будет реализовать дифференциальный уровень обслуживания. Это проверяет пользовательский агент, чтобы определить, требуется ли пререндеринг.
Это список промежуточного программного обеспечения, доступного для использования с сервисом rendertron:
Rendertron также совместим с промежуточным программным обеспечением prerender.io. Примечание. Там различаются списки пользователя.
GET /render/<url>
Конечная точка render отобразит вашу страницу и сериализует вашу страницу. Параметры указаны как параметры запроса:
mobile по умолчанию false . Включите прохождение ?mobile , чтобы запросить мобильную версию вашего сайта.refreshCache : пройти refreshCache=true чтобы игнорировать потенциально кэшированные результаты рендеринга и обработать запрос, как если бы он еще не кэширован. Новый результат рендеринга используется для замены предыдущего результата. GET /screenshot/<url>
POST /screenshot/<url>
Конечная точка screenshot может использоваться для проверки того, что ваша страница рендеринг правильно.
Обе конечные точки подтверждают следующие параметры запроса:
width по умолчанию до 1000 - указывает ширину просмотра.height по умолчанию до 1000 - указывает высоту видового порта.mobile по умолчанию false . Включите прохождение ?mobile , чтобы запросить мобильную версию вашего сайта.timezoneId - указывает рендеринг для часового пояса. Дополнительные варианты доступны в виде строки JSON в POST . Смотрите документацию кукловода для доступных вариантов. Вы не можете указать параметры 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 (устаревший), вам нужно будет позволить рендеринг правильно. В Polymer 1.x, который использует веб -компоненты V0, Shady Dom включен по умолчанию. Если вы используете Shadow DOM, переопределите это, установив параметр запроса dom=shady при направлении запросов на службу rendertron.
Если вы используете Web Components v1 и webcomponents-lite.js или webcomponents-loader.js , установите параметр запроса wc-inject-shadydom=true при направлении запросов на службу rendertron. Эта служба рендеринга заставит необходимые полифиллы быть загруженными и включенными.
Коды статуса из первоначального запрошенного URL -адреса сохраняются. Если это 200 или 304, вы можете установить статус HTTP, возвращаемый службой рендеринга, добавив метатеги.
< meta name =" render:status_code " content =" 404 " /> Чтобы установить rendertron и запустить его локально, сначала установите rendertron:
npm install -g rendertronС помощью Chrome, установленного на вашей машине, запустите CLI Rendertron:
rendertronКлонировать и установить зависимости:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run buildС установленным местным экземпляром Chrome вы можете запустить сервер локально:
npm run start gcloud app deploy app.yaml --project <your-project-id>
Rendertron больше не включает файл Docker. Вместо этого обратитесь к документации кукловода о том, как развернуть бег без головы Chrome в Docker.
При развертывании службы установите переменные конфигурации, включив config.json в корне. Доступные параметры конфигурации:
timeout по умолчанию 10000 - Установите тайм -аут, используемый для визуализации целевой страницы.port по умолчанию 3000 - установите порт для работы и прослушивания службы rendertron. ПРИМЕЧАНИЕ, если установлен Process.env.port, он будет использоваться вместо этого.host по умолчанию 0.0.0.0 - Установите имя хоста для использования для запуска и прослушивания службы rendertron. ПРИМЕЧАНИЕ, если процесс. Env.host установлен, он будет использоваться вместо этого.width по умолчанию 1000 - установите ширину (разрешение), которая будет использоваться для рендеринга страницы.height по умолчанию 1000 - Установите высоту (разрешение), которая будет использоваться для рендеринга страницы.reqHeaders по умолчанию {} - Установите дополнительные заголовки HTTP, которые будут отправлены на целевую страницу с каждым запросом.cache по умолчанию null - установите в datastore , чтобы включить кэширование в Google Cloud, используя DataStore , только при развертывании в Google Cloud , memory , чтобы включить кэширование или filesystem в памяти для включения кэширования на основе дисков.cacheConfig - массив объектов для указания параметров кэшированияrenderOnly - ограничить конечную точку только запросами обслуживания только для определенных доменов. Указано как массив струн. например. ['http://render.only.this.domain'] . Это строгий префикс, поэтому убедитесь, что вы указали точные протоколы, которые будут использоваться (например, http, https).closeBrowser по умолчанию false - true заставляет браузер закрываться и вновь открывать между каждой страницей, некоторые сайты могут понадобиться, чтобы предотвратить URL -адреса после первого, что и возвращает нулевые ответы.restrictedUrlPattern default null - установите ограниченный sturtUrlpattern для ограничения соответствующих запросов с учетом рисунков. cacheDurationMinutes по умолчанию 1440 - установите время истечения в Минеса, по умолчанию до 24 часов. Установить на -1, чтобы отключить срок действия кэшаcacheMaxEntries по умолчанию 100 - установите максимальное количество записей, хранящихся в выбранном методе кэша. Установите -1 , чтобы разрешить неограниченное кэширование. При использовании метода кэширования данных, установка этого значения более 1000 может привести к ухудшению производительности в качестве запроса, чтобы определить размер кэша может быть слишком медленным. Если вы хотите разрешить больший кэш в datastore рассмотрите возможность установить его на -1 и управление размером вашего хранилища данных, используя метод, подобный этому удалению записей в объемеsnapshotDir по умолчанию <your os's default tmp dir>/renderton - файловая система. Только каталог, который будет храниться в файлах кэша rendertron. Пример файла конфигурации, указавший кэш памяти, с 2 -часовым сроком действия и максимум 50 записей
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}Если у вас возникли проблемы с тем, чтобы получить безгол хрома для работы в вашей среде, обратитесь к Руководству по устранению неполадок для кукловода.