werkint/prerender-bundle

此包已被弃用且不再维护。作者建议使用nick4fake/prerender-bundle包。

允许您轻松地为运行Client-Side MVC的Symfony2应用使用prerender。

安装: 60

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 6

分支: 17

类型:symfony-bundle

1.2 2014-08-28 12:32 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:48:36 UTC


README

Build Status Coverage Status

Backbone、EmberJS、Angular等是否是您的日常工具?在管理区域,这很好,但在您的办公前端,您可能会遇到一些SEO问题

感谢Prerender.io,您现在可以在服务器上使用PhantomJS动态渲染JavaScript页面。

此包在很大程度上受到bakura10在zfr-prerender上的工作的启发。

安装

通过输入(或将它添加到您的composer.json文件)来安装模块

$ php composer.phar require "yucca/prerender-bundle" "0.1.*@dev"

app/AppKernel.php中注册该包

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new Yucca\PrerenderBundle\YuccaPrerenderBundle(),
    );
}

app/config/config.yml中启用该包的配置

# app/config/config.yml
yucca_prerender: ~

文档

如何工作

  1. 检查是否应该显示prerender页面
    1. 检查请求是否来自爬虫(代理字符串)
    2. 检查是否请求资源(js、css等...)
    3. (可选) 检查URL是否在白名单中
    4. (可选) 检查URL是否不在黑名单中
  2. prerender服务(PhantomJS服务器)发出GET请求以获取页面的prerendered HTML
  3. 将HTML返回给爬虫

自定义

此包包含从prerender-node中间件提取的合理的默认设置,但您可以轻松自定义它。

#app/config/config.yml
yucca_prerender:
    ....

Prerender URL

默认情况下,YuccaPrerenderBundle使用部署在http://prerender.herokuapp.com的Prerender.io服务。但是,您可能想要在自己的服务器上部署它。为此,您可以使用以下配置自定义YuccaPrerenderBundle以使用自己的服务器

#app/config/config.yml
yucca_prerender:
    backend_url: http://localhost:3000

使用此配置,YuccaPrerender将如何代理"https://google.com"请求如下所示

GET http://localhost:3000/https://google.com

爬虫用户代理

YuccaPrerender根据User-Agent字符串决定是否进行预渲染,以检查请求是否来自机器人。默认情况下,已注册以下用户代理:'baiduspider'、'facebookexternalhit'、'twitterbot'。Googlebot、Yahoo和Bingbot不应在此列表中,因为我们支持escaped_fragment而不是检查这些爬虫的用户代理。您的网站必须能够理解'#!'ajax URL表示法。

您可以使用此示例配置添加其他用于评估的用户代理字符串

#app/config/config.yml
yucca_prerender:
    crawler_user_agents: ['yandex', 'msnbot']

忽略扩展名

YuccaPrerender默认配置为忽略所有以下扩展名的资源请求:.js.css.less.png.jpg.jpeg.gif.pdf.doc.txt.zip.mp3.rar.exe.wmv.doc.avi.ppt.mpg.mpeg.tif.wav.mov.psd.ai.xls.mp4.m4a.swf.dat.dmg.iso.flv.m4v.torrent。这些资源永远不会被预渲染。

您可以使用以下示例配置添加自己的扩展名。

#app/config/config.yml
yucca_prerender:
    ignored_extensions: ['.less', '.pdf']

白名单

白名单可以指定单个URL路径或多个URL路径。使用正则表达式进行比较,因此尽可能具体。如果提供了白名单,则只有包含白名单路径的URL才会被预渲染。

以下是一个示例配置,预渲染包含"/users/"的URL。

#app/config/config.yml
yucca_prerender:
    whitelist_urls: ['/users/*']

注意:请在此处指定URL,而不是Symfony2路由名称。

黑名单

黑名单可以指定单个URL路径或多个URL路径。使用正则表达式进行比较,因此尽可能具体。如果提供了黑名单,则除了包含黑名单部分的URL之外的所有URL都会被预渲染。请注意,如果引用者是黑名单的一部分,它也不会被预渲染。

以下是一个示例配置,预渲染除包含"/users/"之外的所有URL。

#app/config/config.yml
yucca_prerender:
    blacklist_urls: ['/users/*']

注意:请在此处指定URL,而不是Symfony2路由名称。

测试

如果您想确保您的页面正确渲染

  1. 在Chrome中打开开发者工具(Cmd + Atl + J)
  2. 点击右下角的设置齿轮。
  3. 点击设置面板左侧的“覆盖”。
  4. 勾选“用户代理”复选框。
  5. 从用户代理下拉菜单中选择“其他...”。
  6. 在输入框中输入googlebot。
  7. 刷新页面(确保开发者工具保持打开状态)。

感谢

  • 感谢bakura10提供的Zend Framework版本。
  • 感谢Romain Boyer让我发现了prerender.io。
  • 感谢prerender团队以及所有JS MVC开发者。