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
   408   409   410   411   412   413   414   415   416   417   418