werkint / prerender-bundle
允许您轻松地为运行Client-Side MVC的Symfony2应用使用prerender。
Requires
- php: >=5.3.2
- psr/log: 1.0.0
- symfony/framework-bundle: ~2.3
Requires (Dev)
- phpunit/phpunit: ~3.7
- satooshi/php-coveralls: ~0.6
- squizlabs/php_codesniffer: 1.4.*
This package is not auto-updated.
Last update: 2022-02-01 12:48:36 UTC
README
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: ~
文档
如何工作
- 检查是否应该显示prerender页面
- 检查请求是否来自爬虫(代理字符串)
- 检查是否请求资源(js、css等...)
- (可选) 检查URL是否在白名单中
- (可选) 检查URL是否不在黑名单中
- 向prerender服务(PhantomJS服务器)发出
GET
请求以获取页面的prerendered HTML - 将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路由名称。
测试
如果您想确保您的页面正确渲染
- 在Chrome中打开开发者工具(Cmd + Atl + J)
- 点击右下角的设置齿轮。
- 点击设置面板左侧的“覆盖”。
- 勾选“用户代理”复选框。
- 从用户代理下拉菜单中选择“其他...”。
- 在输入框中输入googlebot。
- 刷新页面(确保开发者工具保持打开状态)。
感谢
- 感谢bakura10提供的Zend Framework版本。
- 感谢Romain Boyer让我发现了prerender.io。
- 感谢prerender团队以及所有JS MVC开发者。