Google正在抓取我的网页而不会出错,但至少会失败 - 呈现标题和描述元内容。在大约1300页中,它说我有大约300个重复的元内容。当我看时,重复项就像{{metaContent}}。
当我使用site:URL检查我的页面时,在某些页面上,我看到了一个好的标题和描述。在其他页面上,我看到花括号。 Google的文档表明它非常擅长处理JavaScript,我认为AngularJS应该处于驾驶之中。
我正在使用Angular v1.5.5和ngRoute进行路由。我已将耗时的API调用移到路由解析中,如下所示:
$routeProvider.when('/route', {
templateUrl: 'sometemplate',
controller: 'someController',
resolve: {stuffINeed: function () {return service.getStuff()}}
})
我在根范围内的html如下所示:
<title ng-bind-template="{{title}}"></title>
<meta name="description" content="{{metaDescription}}" />
然后在我的控制器中,我正在做:
$rootScope.title = 'something'
$rootScope.metaDescription = 'something'
我下一次改进的尝试是不要将$ rootScope传递给控制器,而是在app.run中监听“$ routeChangeSuccess”,如下所示:
$rootScope.$on( "$routeChangeSuccess", function(event, next, current)
然后在根范围上设置title和metaDescription。
我已经通过一些改进更新了路线更改成功,但我仍然有重复的元内容。确切地说,我在~50k索引页面中有400个重复。现在它只是下面的样板。当我导航到页面并检查时,我看到了我的期望。也许Angular不是这项工作的正确工具 - 我们希望谷歌搜索引擎优化快乐。我的预感是,如果我的页面没有在某个时间阈值内呈现,Google将无法获得更新的标题和元内容。
app.run(function($rootScope) {
$rootScope.title = boilerplate
$rootScope.metaDescription = boilerplate
$rootScope.$on('$routeChangeSuccess', function(event, next, current) {
$rootScope.title = realtitle
$rootScope.metaDescription = realdescription
})
})
感谢阅读!