gpt4 book ai didi

ruby-on-rails - 在 Ruby On Rails 上使用 PhantomJS 进行动态页面的服务器端渲染

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:09 29 4
gpt4 key购买 nike

我制作了一个 90% 是 Javascript 的网页。所有网站都是动态呈现的。

我希望此内容也由服务器呈现,以便 Google 可以抓取我的所有内容和链接并将其编入索引。

我知道为了不被google封禁,动态页面的内容必须和服务器呈现的页面几乎一致。

我不想编写两个不同的页面(在这种情况下,一个来自带有 Handlebars 的客户端,另一个来自带有 ERB 的服务器)。

于是我想到了PhantomJS。我想要的是,当我从谷歌获得 _escaped_fragment_ 参数时,我打开没有 PhantomJS 的页面,我将其从 PhantomJS 呈现为 HTML,并将其从服务器返回给谷歌。这样,我就不必为任何内容创建两个不同的页面。

我知道我也可以将 Handlebars 用于服务器端模板,但无论如何我都必须对所有内容进行两次编码。

有谁知道如何用 PhantomJS 完成这个?有没有其他方法可以不重复逻辑和代码两次并让 Google 为网站编制索引?

谢谢!!!

最佳答案

是的,你可以。

将以下内容添加到您的 Javascript 密集型页面

<meta name="fragment" content="!">

当 Google bot 找到这个标签时,它会发出一个新的 http GET 请求。这次,它会将 ?_escaped_fragment_= 添加到您的 URL。

因此,如果您使用 Javascript 的网页位于:

www.mysite.com/mypage

Google 将使用以下 URL 发出新的 GET:

www.mysite.com/mypage?_escaped_fragment_=

在您的 Ruby GET 处理程序中,您只需使用未转义的 URL 调用 PhantomJs(只需进行字符串替换)。在您的 PhantomJs javascript 代码中,等待页面呈现,然后使用常规 javascript 提取 HTML 并将其返回给您的 Ruby GET 处理程序,您将在其中简单地使用 HTML 文本字符串响应 GET。

这样您就不必编写两次代码。该解决方案是通用的,可以对任何内容进行快照。

关于ruby-on-rails - 在 Ruby On Rails 上使用 PhantomJS 进行动态页面的服务器端渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857385/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com