我对Angular 4的搜索引擎优化有一个相当普遍的问题。我读到了爬行SPA的问题,而另一方面,人们声称谷歌根本就没有问题。在我使用基于Nginx和Docker构建的生产设置的背景下,我想知道最佳策略是什么。我想回答以下问题:
1)我听说Angular Universal用于服务器端渲染,但我想这种方法必然会使用快速服务器包?我使用的是Nginx,它会对生产产生影响吗?我如何用docker设置它?
2)或者,我听说有可能将prerender与Nginx和Docker一起使用(prerenderer仅用于抓取工具)。这适合Angular 4吗?在我的情况下,这是我认为最直接的方式......
3)甚至有必要预呈现页面吗?今天搜索引擎优化的主要驱动力是什么? Google是否真的能够抓取SPA? AFAIK,metatags再也没有那么大的影响......
谢谢大家
答案 0 :(得分:0)
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,否则将在浏览器中生成角度,并且搜索爬虫更容易获取而不必自己渲染页面。尽管谷歌最有可能做到这一点,但其他人却没有 - 并且您的网页排名将受到网站抓取效率的影响。