标签: prerender

Facebook sharer和prerender.io(在angularjs应用程序中)

我刚刚将prerender.io middlewave设置到我的tomcat服务器中(运行一些java webservices和一个angularjs应用程序).

服务(prerender)工作正常,我可以看到页面添加到列表中(当我发送请求模拟用户代理时).

我的问题是Facebook分享按钮(来自addthis).

基本上,如果我访问一个尚未缓存的页面并单击"在Facebook上共享"按钮,它将显示angularjs模板而不是"渲染"模板.

奇怪的是,我可以在Prerender.io admin上看到该页面.

它就像它太慢而且超时.我仍然不知道如何获得页面的非缓存版本.

在第一次错误调用Facebook缓存页面后,如果我不从Facebook对象调试器(https://developers.facebook.com/tools/debug/og/object)手动刷新它,错误的页面将保持缓存在FB上服务器,直到刷新FB缓存.

无论如何有任何关于如何解决这个问题的建议?

我可以预先缓存每一页,但我将不得不处理新的页面,我不认为这是一个很好的解决方案.

谢谢,Dem

javascript facebook facebook-sharer prerender angularjs

7
推荐指数
1
解决办法
1621
查看次数

Prerender.io没有缓存页面

我用AngularJS和expressJS后端制作了一个应用程序.现在我想让它可抓取,我发现prerender.io.我认为我已经完成了一切正确的bur因为某些原因我在prerenderer仪表板中没有看到任何统计信息.

在我的app.configure函数中,我包含了如下标记:

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

在我的HTML中,我已经包含了元片段标记:

<meta name="fragment" content="!">
Run Code Online (Sandbox Code Playgroud)

我做的最后一件事是告诉AngularJS使用hashprefix:

$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,如果我参考文档,我得不到正确的结果.下面你可以看到它应该做什么:

Google会向您的服务器发送请求,如下所示:

http://www.example.com/?_escaped_fragment_=/user/123

你把网址变成了这个:

http://www.example.com/#!/user/123

出于某种原因,如果我尝试这个,它仍然会添加#!标志添加了URL的结尾,所以如果我请求我的应用程序的URL像谷歌我得到这个:

http://www.my-website.com/?_escaped_fragment_=#!/home

所以它不会替换url中的哈希值.我认为这是我的问题的原因.

提前致谢!

编辑 - 如果我例如添加一个额外的路线,那么它的工作原理:

app.get('/', function (req, res) {
    res.sendfile('./public/index.html'); 
});

app.get('/test', function (req, res) {
    res.sendfile('./public/index.html'); 
});
Run Code Online (Sandbox Code Playgroud)

'/'不上班路线'/test'的路线不工作.

seo node.js prerender express angularjs

6
推荐指数
1
解决办法
2969
查看次数

Prerender不使用Nginx处理https

我在运行Nginx的应用程序中包含prerender时遇到问题,我已经定义了一个简单的规则,用于将所有http请求重写为https,但是预渲染在运行GoDaddy证书的https上有一些问题,它会缓存页面但内容为空.我已经在http上测试了它并且工作正常,我现在正在尝试的是,如果我http_user_agent是Prerender,我想保持http网址完好无损,否则将网址重写为https.

欢迎任何帮助/意见/建议.

nginx prerender

6
推荐指数
1
解决办法
1310
查看次数

如何使用Prerenderio与Meteor?

我想在模拟服务器上使用prerenderio和Meteor而不是phantomjs.

但是根据它们提供的示例,我不确定如何集成它.它们只提供一个节点表达中间件,它不能100%转换.

prerender meteor

6
推荐指数
1
解决办法
1796
查看次数

prerender.io IIS配置

我试图在我的ASP.NET应用程序中实现Prerender.io.我配置了所有必需的步骤,包括

1)<meta name="fragment" content="!">在Index.html的负责人

2)配置模块

 <httpModules>
      <add name="Prerender" type="Prerender.io.PrerenderModule, IslamicMatchMakers.Web, Version=1.0.0.0, Culture=neutral" />
    </httpModules>
Run Code Online (Sandbox Code Playgroud)

3)添加了自定义标题

 <httpProtocol>
      <customHeaders>
        <add name="X-Prerender-Token" value="XXXX" />
      </customHeaders>
    </httpProtocol>
Run Code Online (Sandbox Code Playgroud)

4)定义的重写规则

<rewrite>
      <rules>

        <!--# Only proxy the request to Prerender if it's a request for HTML-->
        <rule name="Prerender" stopProcessing="true">
          <match url="^(?!.*?(\.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))(.*)" ignoreCase="false" />
          <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_USER_AGENT}" pattern="baiduspider|facebookexternalhit|twitterbot" />
            <add input="{QUERY_STRING}" pattern="_escaped_fragment_" ignoreCase="false" />
          </conditions>
          <action type="Rewrite" url="http://service.prerender.io/http://{HTTP_HOST}/{R:1}" />
        </rule>

        <rule name="Html5Mode" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{URL}" …
Run Code Online (Sandbox Code Playgroud)

iis seo prerender

6
推荐指数
1
解决办法
1886
查看次数

使用parse.com进行单页Web应用程序可抓取

我正在使用Parse.com构建一个网站,并尝试通过FB和Google机器人抓取它.该网站基于parse.com,不使用Angular.

我已经查看了这里的主题,并在我的结尾设置相应的东西.我已经创建了一个端点来测试这些东西:

app.get('/hello/:id', function(req, res) {
    res.render('hello');
});
Run Code Online (Sandbox Code Playgroud)

以下是我在日志中的内容,当谷歌机器人提取网址时

https://www.example.org/hello/#!a/b

I2015-11-10T05:35:18.580Z]v642 Ran custom endpoint with:
  Input: {"method":"GET","url":"/hello/","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","accept-encoding":"gzip,deflate","cache-control":"no-cache","from":"googlebot(at)googlebot.com","host":"www.example.org","user-agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","version":"HTTP/1.1","x-forwarded-for":"10.252.5.60","x-forwarded-proto":"https"}}
  Result: Success
Run Code Online (Sandbox Code Playgroud)

由于Google抓取工具不会使用片段重写Url,因此会发送错误的网页快照(对应于没有参数的基本网址+路径).有趣的是,facebookbot用一个转义片段取代了shebang,然后获取下面的url:

/hello/?_escaped_fragment_=posts/abcdef
Run Code Online (Sandbox Code Playgroud)

在解析结束时正确处理,pre-render.io发送正确的缓存页面.

我几个小时以来一直在讨论这个问题,Parse的人们无处可寻找一个相当基本和重要的问题.

有人曾经设法让Parse的单页设计与谷歌和Facebook机器人合作,还是仅仅是一个失败的原因?

谢谢!

PS:现在看来,谷歌机器人尝试渲染AJAX页面,而不考虑转义的碎片.换句话说,现在看来,默认的行为,但在同一时间,现有的AJAX页面可能仍与逃脱片段爬......看到线程这里从Web开发人员的反馈.

search-engine web-applications prerender parse-platform

6
推荐指数
0
解决办法
153
查看次数

我们可以使用angular2 universal与服务器端JAVA

我有一个web项目,它在前端使用角度2,在服务器端使用java spring 4.我对角度2有点新.我想使用角度通用进行预渲染.我怎么能够实现它?

是否有任何教程用服务器端的Java解释它?

还有其他图书馆会帮助我吗?

java spring prerender angular

6
推荐指数
2
解决办法
5645
查看次数

使用React-Snapshot Pre-Rendering静态文件创建React应用程序

我正在使用create react app和react-snapshot为我的路线预渲染静态标记.即分别"/", "/signIn", "/signUp"生成index.html, signIn.html, signUp.html.

我面临的问题是无论我走哪条路线,最初都会index.html提供从根路由的react-snapshot生成的静态 "/",然后提供正确的静态路由文件,然后提供main.js捆绑(请参阅gif).如果我只是main.js单独捆绑我的应用程序,那就没关系了.但由于我想使用静态预生成的html文件,如何禁用服务工作者在我已经拥有静态html文件的某些路由上提供index.html.

更新:如果我从create react应用程序中删除服务工作者,该应用程序会加载路径正常的静态文件.但是,我想保留服务工作者的功能以获得PWA功能.

更新2:chrome browser根路由的快速闪烁上,静态标记仅针对每个路由发生一次.在第一次闪烁后,似乎Chrome浏览器缓存修复了它,另外如果我从chrome dev工具禁用缓存并尝试转到新路由,根路由的闪烁返回.对Firefox browser这个问题,无论什么存在,每个路线的变化或更新根航线的瞬间轻弹静态标记发生.

如何避免index.html最初在服务工作者的所有路由上呈现而不删除服务工作者.

更详细:

在Service Worker激活后,以下代码将在所有路径的页面源体中呈现:

 <body>
 <script>window.react_snapshot_state = {};</script>
 <noscript>You need to enable JavaScript to run this app.</noscript>
 <div id="root" data-react-checksum="-928641672"><div data-reactroot="" class="sc-cSHVUG hyLStb"><div class="sc-fjdhpX dIRAsX"><ul class="sc-gqjmRU koKaUp"><li><a class="navItemActive sc-VigVT cZrGwO" href="/"><!-- react-text: 6 --> <!-- /react-text --><!-- react-text: 7 -->Home<!-- /react-text --></a></li><li><a class="sc-VigVT cZrGwO" href="/aboutUs/"> About …
Run Code Online (Sandbox Code Playgroud)

prerender reactjs service-worker create-react-app

6
推荐指数
1
解决办法
1814
查看次数

我们可以在一个应用程序代码中使用 Angular SSR 和 PreRendering 混合吗

我正在使用 Angular 5。我在我的项目中添加了 Universal,参考: https: //angular.io/guide/universal

我有 5 个组件,其中 2 个组件:Component1Component2是静态的,没有任何打字稿代码,其他 3 个组件是动态的,它使用打字稿代码。

我还在我的应用程序中添加了预渲染代码。参考: https: //blog.angular-university.io/angular-universal/

我的问题是,我可以对某些页面使用预渲染,对某些页面使用 ssr,因为我必须改进静态页面的组件 1 和组件 2 的初始加载时间。即使我使用预渲染 ts 文件创建静态 html,当我从应用程序访问它时,它看起来好像已经加载了正常的 ssr 路由。那么,我可以在我的应用程序中进行预渲染和 ssr 吗?如果我可以使用,那么我该怎么做或者如何检查它是否适用于预渲染应用程序。

prerender server-side-rendering angular

6
推荐指数
0
解决办法
732
查看次数

prerender.io .htaccess 变量 - Reactjs CRA

我为 CRA 设置了 prerender.io 并且它运行良好,但是当机器人点击没有参数的 URL 时,它会放在 URL 的末尾 - 字符串“.var”

在此处输入图片说明

我尝试了 (.*) 的变体,但似乎不起作用。有任何想法吗?

这是 .htaccess 文件

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

<IfModule mod_headers.c>
    RequestHeader set X-Prerender-Token "TOKEN"
    RequestHeader set X-Prerender-Version "prerender-apache@2.0.0"
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    <IfModule mod_proxy_http.c>
        RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
        RewriteCond %{QUERY_STRING} _escaped_fragment_
        RewriteCond %{REQUEST_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))

        RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/$2 [P,END]
    </IfModule>
</IfModule>
Run Code Online (Sandbox Code Playgroud)

.htaccess prerender reactjs cra

6
推荐指数
1
解决办法
107
查看次数