标签: prerender

PreRender上的绑定控件

我被引导相信绑定你的控件的最佳点是PreRender.因为所有控件都准备好了,这是渲染之前的最后一个阶段等.这是正确的还是应该将控件绑定在不同的点?

非常感谢

路易

c# asp.net user-controls prerender

5
推荐指数
1
解决办法
6156
查看次数

Google Chrome Prerender是否可以使用ajax请求

我希望使用预呈现来加速页面,使用Chrome预渲染:

https://developers.google.com/chrome/whitepapers/prerender

我想知道这是否适用于ajax请求?我有一组链接,通过jQuery $ .get加载到他们的页面中的模态.我还有一个脚本,为这些链接创建prerender标记.

但是,ajax负载似乎没有任何性能提升.Prerendering正在运行(通过上面的链接中的故障排除部分进行检查),它似乎加快了标准链接,但不是ajax请求.

它可能不会以这种方式工作,但我无法在其他地方找到任何关于它的信息.

jquery html5 google-chrome prerender

5
推荐指数
0
解决办法
394
查看次数

Backbone.js路由:从hash到hashbang

我有一个传统的backbone.js应用程序,我目前正在进行改造,可以被搜索引擎正确抓取.我已经决定使用prerender.io的Node.js + Phantom.js系统来为搜索引擎提供我的javascript驱动网站的静态HTML呈现.但是,使用prerender.io的一个要求是将所有哈希URL转换为hashbang(因此site.com/#gallery应该是site.come /#!gallery).我的网站目前仅使用哈希进行网址路由.如何将其切换为hashbang?

javascript prerender backbone.js

5
推荐指数
1
解决办法
1496
查看次数

prerender.io和node.js呈现空白页

我不确定如何设置prerender.io和node.js。在prerender.io上,它只是说要添加

app.use(require('prerender-node').set('prerenderToken', 'TOKEN'));
Run Code Online (Sandbox Code Playgroud)

在应用程序内。

我的代码如下所示:

var express = require('express');
var app = module.exports = express();
app.use(require('prerender-node').set('prerenderToken', 'TOKEN'));
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

当访问http://192.168.xx:3000 / http://myangularjswebsite.com/?_escaped_fragment_时,加载需要花费几秒钟的时间,然后呈现空白页面。

有什么建议么?

seo node.js prerender angularjs

5
推荐指数
0
解决办法
1073
查看次数

session_regenerate_id和Chrome预取/渲染问题

我遇到了一些会话功能以及Chrome预取/呈现方式的问题.我试图将一个论坛软件(esoTalk)与自定义laravel 4.3应用程序连接.我有认证事件监听器,导致laravel创建一个php会话(此外还有内置的laravel会话),允许论坛和应用程序共享身份验证详细信息.在访问论坛时,如果用户未登录 - 但此共享信息存在(即用户已登录laravel应用程序),论坛将使用会话中提供的信息登录该用户.

在大多数情况下,这可以正常工作,除了Chromes预取似乎是破坏事物.如果我使用调试器监控论坛,我可以看到,当我输入论坛网址时,但在我点击之前输入chrome将访问论坛.通过调试器,我可以看到它完成了它需要做的所有事情,并且成功登录.作为最后一步,论坛重新生成会话ID以停止劫持.这就是它破裂的地方.看起来chrome忽略了新的会话ID(通过http SetCookie标头发送),这样当我点击Enter时,我会使用原始会话ID进入论坛(并发出一个全新的请求).此ID不存在,因此我设置了一个新的ID,因此失去了我的登录状态.对于用户而言,这看起来就像他们从未登录过.

我已经google了高低,以获得关于如何解决这个问题的建议.我不愿意删除会话ID重新生成,因为它确实用于安全目的.我也无法禁用chrome预取/渲染.总而言之,我似乎有点腌渍.

我创建了一些复制它的代码.虽然它依赖于预渲染(因此你需要通过地址栏多次击中每个文件)

// test1.php

<?php

function regenerateToken()
{
    session_regenerate_id(true);
    $_SESSION["token"] = substr(md5(uniqid(rand())), 0, 13);
    $_SESSION["userAgent"] = md5($_SERVER["HTTP_USER_AGENT"]);
}

// Start a session.
session_set_cookie_params(0, '/');
session_name("SessionBork_Test_session");
session_start();

$_SESSION["SentryUserId"] = '99';

regenerateToken();

header('Content-Type: text/plain');
foreach ($_SESSION as $k => $v) {
    echo $k . " = " . $v . "\n";
}
Run Code Online (Sandbox Code Playgroud)

访问test1.php后跟test2.php,你应该看到一堆会话变量输出.一旦预渲染/取出,你就会开始收到破碎的信息.

// test2.php
<?php

function regenerateToken()
{
    session_regenerate_id(true);
    $_SESSION["token"] = substr(md5(uniqid(rand())), 0, 13);
    $_SESSION["userAgent"] = md5($_SERVER["HTTP_USER_AGENT"]);
}

// Start a session.
session_set_cookie_params(0, '/');
session_name("SessionBork_Test_session"); …
Run Code Online (Sandbox Code Playgroud)

php session google-chrome session-cookies prerender

5
推荐指数
1
解决办法
675
查看次数

最新的2015方法,使您的Angular项目SEO友好

我建立了一个大型的angularJS网站,并通过部分加载json文件使其成为多语言.我的网站上满是这些字符串:

{{ 'TITLE' | translate }}
Run Code Online (Sandbox Code Playgroud)

我不知道如何让他们对SEO友好.我在互联网上找到了很多解决方案,但也有很多人表示不再需要它,因为Google和Bing可以扫描角度项目.

所以我将我的项目设置为html5 = true,但它创建了一个<base>错过的错误.所以我实现了一个<base href="/">但是我的项目后来被部署到子文件夹/ staging /所以所有链接都被破坏了.(我的开发和生活环境有不同的基础)

我很高兴依赖像prerender.io这样的第三方

什么是让你的Angular项目SEO友好的最新方法.还有localhost解决方案吗?Grunt可以预渲染我的所有页面,以便我可以在构建脚本中实现它吗?

seo prerender angularjs

5
推荐指数
1
解决办法
2327
查看次数

预呈现缓存风险谷歌隐形惩罚?

在让Google Crawler解析我们的AngularJS网站时遇到一些麻烦,我们正在使用Prerender来为我们的网页提供易于抓取的版本.

这一点运作良好 - 除了网站管理员工具表明由于Prerender的延迟,我们的网站速度已经大大恶化.我们担心这会影响排名.

所以有两个问题:

  1. Google是否在测量网站速度时使用Prerender页面 - 或者我们网站的(真正的)支持Javascript的版本?我们怀疑它是前者.

  2. 一种可能的解决方案是缓存Prerendered页面.然而,由于页面被放入缓存并返回到爬虫之间的时间延迟,这些缓存页面可能与用户看到的不完全匹配 - 例如,我们可能会向页面添加其他产品,标题/元标记反映产品数量任何时候都可以使用.标题,元描述和页面内容的这些小差异是否足以冒着隐形惩罚的风险?如果是这样,缓存的替代方法是什么?

非常感谢任何帮助.

seo prerender angularjs

5
推荐指数
1
解决办法
1326
查看次数

Ember预渲染:TypeError:'undefined'不是函数(评估'u.bind(e)')

我正在尝试为我的ember应用程序创建预渲染服务器.

我安装了ember-prerender(https://github.com/zipfworks/ember-prerender),使用/ example中提供的初始化程序,将其部署在我的一台服务器上.

但是当我尝试启动它时:

[Renderer 0] Engine starting up (phantom)
[Renderer 0] Restarting rendering engine in 25000 seconds after it failed
             with error: Phantom encountered an error: TypeError: 
             'undefined' is not a function (evaluating 'u.bind(e)') 
Run Code Online (Sandbox Code Playgroud)

我不确定在哪里看.我试过了:

  • 删除所有第三方SDK(Facebook,Google Analytics)
  • 记录代码的不同部分(事件XContentReady似乎被触发)
  • 与发动机启动jsdom,而不是phantom(给出:[Renderer 0] Restarting renderer, timed out while initializing)
  • 尝试生产

我不知道现在在哪里看.最糟糕的是我几天前就开始工作了(参见:Ember预渲染:初始化时超时)

编辑:

我不认为这个问题与代码有任何关系,因为我对以前工作的版本进行了硬重置.

  • 也许有些版本改变了(bower,npm,phantom)?我试图将凉亭更新到1.6,没有成功.
  • 也许我有新的依赖导致问题?我不知道究竟是怎么回事

编辑2:我在一台新服务器上开始新鲜,现在我得到了Phantom崩溃的错误消息:

[Renderer 0] Restarting rendering engine in 25000 seconds
after it failed with …
Run Code Online (Sandbox Code Playgroud)

prerender ember.js

5
推荐指数
1
解决办法
397
查看次数

Ember Fastboot Jquery

我刚刚在我的项目中添加了ember-cli-fastboot(github),以便为爬虫机器人提供预渲染服务器.

执行以下安装步骤后,启动server(ember fastboot --serve-assets)时出现错误消息:

jQuery is not defined
ReferenceError: jQuery is not defined
at <anonymous>:66304:16 [...]
Run Code Online (Sandbox Code Playgroud)

缓存中有什么要清理吗?我错过了一些明显的东西吗

jquery prerender ember.js

5
推荐指数
1
解决办法
1119
查看次数

有些时候,Nginx会为某些angularJS URL返回404错误

我正在使用Nginx Server浏览基于AngularJS的网站(HTML模式为True以避免URL中的#).除此之外,我已经配置了Varnish以减少服务器上的负载.因此Varnish在端口80上运行,Nginx在端口81上运行.我使用prerender.io来获取AngularJS网站的SEO.

问题是,当prerender尝试重新缓存角度URL时,Nginx返回404错误代码.

我的nginx.conf如下:

    server {
    listen       81 default_server;
    listen       [::]:81 default_server;
    server_name  abcxyzabc.com;
    root         /var/www/html/abcxyzabc/;

    location / {
        proxy_set_header X-Prerender-Token ****************;     

        set $prerender 0;
        if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") {
            set $prerender 1;
        }
        if ($args ~ "_escaped_fragment_") {
            set $prerender 1;
        }
        if ($http_user_agent ~ "Prerender") {
            set $prerender 0;
        }
        if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|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|ttf|woff|svg|eot)") {
            set $prerender 0;
        }

        #resolve using Google's DNS server to force DNS resolution and prevent caching of IPs
        resolver 8.8.8.8;

        if …
Run Code Online (Sandbox Code Playgroud)

nginx varnish prerender http-status-code-404 angularjs

5
推荐指数
0
解决办法
323
查看次数