Angular 4 SEO с Nginx и Docker

У меня есть довольно общий вопрос, связанный с SEO для Angular 4. Я читал о проблемах со сканированием SPA, в то время как, с другой стороны, люди утверждали, что у Google вообще не будет проблем. Интересно, с какой стратегии лучше всего начать, учитывая, что я использую производственную установку, построенную на Nginx и Docker. Я хотел бы получить ответы на следующие вопросы:

1) Я слышал об Angular Universal для рендеринга на стороне сервера, однако я предполагаю, что этот подход связан с использованием пакета экспресс-сервера? Я использую Nginx, влияет ли это на работу? Как мне настроить это с помощью докера?

2) В качестве альтернативы я слышал о возможности использовать пререндеринг вместе с Nginx и Docker (пререндерер используется только для сканеров). Подходит ли это для Angular 4? Я думал, что это будет самый простой способ в моем случае...

3) Нужно ли предварительно отображать страницу? Каковы основные драйверы современного SEO? Действительно ли Google способен сканировать SPA? Насколько я знаю, метатеги больше не имеют такого большого влияния ....

Спасибо вам всем


person philologos    schedule 05.01.2018    source источник
comment
Этот вопрос кажется не по теме, потому что он не входит в рамки обсуждения, как описано в справочном центре.   -  person    schedule 06.01.2018


Ответы (1)


Angular Universal не привязан к выражению, вы можете отображать любой желаемый результат (файл, поток и т. д.).

Вот пример рендеринга прямо в файл:

import 'reflect-metadata';
import 'zone.js/dist/zone-node';
import { renderModuleFactory } from '@angular/platform-server';
import { enableProdMode } from '@angular/core';
import { join } from 'path';
import { readFileSync, writeFileSync, mkdirSync } from 'fs';

enableProdMode();

const DIST_FOLDER = join(process.cwd(), 'dist');

const template = readFileSync(join(DIST_FOLDER, 'browser','index.html')).toString();
const { AppServerModuleNgFactory } = require('main.server');


renderModuleFactory(AppServerModuleNgFactory, { document: template, url: '/' })
  .then(html => {
    writeFileSync(join(DIST_FOLDER, 'browser', 'index.html'), html);
   }
);

Полученный index.html содержит HTML-код, который в противном случае был бы сгенерирован угловым в браузере, и поисковым роботам гораздо проще подобрать его, чем отображать страницы самостоятельно. Несмотря на то, что Google, скорее всего, способен на это, другие нет, и рейтинг вашей страницы будет зависеть от того, насколько эффективно будет сканироваться ваш сайт.

person Peter Salomonsen    schedule 05.01.2018