Page 413 - AngularJS权威教程
P. 413
30.4 服务端 393
30.1 Ajax 缓存 19
常见的浏览器里,IE是唯一缓存XHR请求的。为了避免这一缺陷,可以在HTTP响应头中设
置Cache-Control值为no-cache。 20
这是现代浏览器的默认行为,使用它可以为IE用户提供更好的体验。
21
可以像这样修改每个请求的默认HTTP头:
.config(function($httpProvider) { 22
$httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache';
});
23
30.2 AngularJS 中的 SEO
24
诸如Google和Bing这样的搜索引擎,都抓取静态Web页面,而非含有大量JavaScript的客户端
应用。搜索引擎机器人通常都快速、高效地抓取数据,因此大多数情况下在抓取页面时不会渲染
JavaScript。 25
这是因为这些JavaScript应用都需要一个JavaScript引擎来解释它,例如PhantomJS或者v8。
Web爬虫程序通常在加载Web页面时并不会使用JavaScript解释器。 26
在搜索引擎中不包含JS解释器有充分的理由:因为它们不需要,这样做只会在抓取
Web页面时更慢、更低效。 27
30.3 使 Angular 应用可被索引 28
有几种不同的方式可以让Google处理应用索引。一个常见的做法是使用后端程序为你的 29
Angular应用提供服务。这种方法的优点是实现简单,不会有太多重复的代码。
第二种做法是在JavaScript中的<noscript>标签内渲染所有由Angular应用交付的内容。稍后 30
会简单讨论这一主题,因为实现<noscript>方法时很大程度上取决于如何交付应用。例如,可
以在服务端渲染页面时使用<noscript>。
31
30.4 服务端
32
Google和其他高级搜索引擎都支持hashbang格式的URL,我们可以用它来识别当前要访问的
页面。搜索引擎会将这个URL转换为一个自定义的URL格式,以便服务器可以访问它们。 33
搜索引擎访问这个URL,并期待获取到浏览器将要接收的HTML(完全渲染过的HTML内容)。
例如,Google会把hashbang格式的URL: 34
http://www.ng-newsletter.com/#!/signup/page
35
转变为URL:
http://www.ng-newsletter.com/?+escaped_fragment_=/signup/page
36