标签: prerender

Rel PreRender/PreFetch,它是否执行JS?

<!—Firefox Prefetching -->
<link rel="prefetch" href="http://www.example.com/page2.html">

<!—Chrome Prefetching -->
<link rel="prerender" href="http://www.example.com/page2.html">
Run Code Online (Sandbox Code Playgroud)

如果我在页面上使用Javascript进行预呈现/预取(例如Google Analytics JS),那么prerender/prefetch会在页面上执行Javascript吗?或者它是否会延迟任何JS的执行,直到用户实际请求页面为止?

javascript prefetch preloading prerender

8
推荐指数
1
解决办法
3169
查看次数

是否有任何API可以禁用chrome中的prerender功能?

如果不使用自动化,有没有办法在谷歌浏览器中以编程方式禁用预呈现功能(高级设置:预测网络操作以提高页面加载性能)?

我找不到任何允许我修改此设置的直接API.所以,我尝试dns_prefetchin->enabled"[Chromedir]\User Data\Default\Preferences"文件中修改"false".但是,每次打开Chrome时,该值都会重置.使用Procmon实用程序并未向我提供有关chrome可以存储其设置的位置的任何其他线索.

提前致谢.

编辑:我应该提前提到使用命令行选项--prerender不起作用,因为我需要为所有chrome实例关闭此值(即使由操作系统shell启动).

api google-chrome prerender

8
推荐指数
0
解决办法
579
查看次数

Google Chrome Prerender中的"Cookie冲突"

我一直在使用Chrome的预呈现功能

<link rel="prerender" href="/path" />
Run Code Online (Sandbox Code Playgroud)

但是在lates更新之后,当我尝试使用调试时[chrome://net-internals/#prerender].它表明预渲染因中止而中止"Cookie Conflict".

我试图调试以确保在页面加载后是否有一些ajax调用正在更改cookie,但是没有找到.预渲染仍然中止.它曾经与以前的chrome版本一起工作得很好.

html5 google-chrome prefetch prerender

8
推荐指数
1
解决办法
402
查看次数

资源提示的奇妙但令人困惑的想法:(a)同步?

我一直在阅读谷歌的幻灯片,以进行所谓的预优化.(对于那些感兴趣的人或那些不知道我在说什么的人,这张幻灯片总结了它.)

在HTML5中,我们可以预取和预呈现link元素中的页面.这是一个概述.我们可以使用reldns-prefetch,subresource,prefetchprerender.

第一个令人困惑的事情是,显然只有prefetch规范的HTML5(和5.1),但没有其他人的.(然而!)第二,浏览器支持对于(dns-)是好的,prefetch但对其他人来说非常糟糕.特别是Firefox缺乏支持prerender令人讨厌.

第三,我问自己的问题是:浏览器读取行后是否会发生预取(或任何其他方法)(然后阻止当前页面加载),或者等待加载在当前页面完全加载之前的后台资源?

如果它以阻塞方式同步加载,有没有办法异步或在页面加载后执行此操作?我想这样的JS解决方案,但我不确定它会异步运行.

var pre = document.createElement("link");

pre.setAttribute("rel", "prerender prefetch");
pre.setAttribute("href", "next-page.php");

document.head.appendChild(pre);
Run Code Online (Sandbox Code Playgroud)

如果适用,请回答这两个问题!

编辑9月17日

阅读编辑的资源提示草案后,我发现了以下内容(强调我的):

由于CPU,GPU,内存和网络资源的额外争用,下一次导航可能需要的资源提取可能会对当前导航上下文的性能产生负面影响.为解决此问题,用户代理应实现逻辑以减少和消除此类争用:

  • 下一导航所需的资源提取应具有较低的相对优先级,并且不应阻止或干扰当前导航上下文所需的资源提取.
  • 启动下一导航所需的资源获取的最佳时间取决于协商的传输协议,用户当前连接配置文件,可用设备资源和其他上下文特定变量.留下用户代理以确定启动提取的最佳时间 - 例如,用户代理可以决定等待直到所有其他下载完成,或者如果协商的协议支持必要的原语,则可以选择具有低优先级的流水线请求.或者,由于资源约束,用户偏好或其他因素,用户代理可以选择退出启动提取.

请注意用户代理可以执行此操作的程度.我真的担心这将导致不同浏览器的不同实现,这将导致再次分歧.

问题仍然存在.我不清楚是否通过使用prefetch或其他方式同步加载外部资源(因此,当放入头部时,在加载内容之前),或者异步(具有较低优先级).我猜测后者,虽然我不明白这是怎么可能的,因为link规范中没有任何内容可以允许异步加载链接元素的内容.

html5 prefetch prerender

8
推荐指数
1
解决办法
142
查看次数

使用react-spa-prerender在其他类上重复一个类

我使用React SPA Prerender来优化 SEO,但遇到了这个问题:

\n

我有一个名为 的类HomeTitleContainer,专门用于文件Home.jsx,即主页。

\n
import { Container } from \'react-bootstrap\';\nimport Link from \'../immutable/nav/Link\';\nimport \'./Home.css\';\n\nconst Home = () => {\n  \n    return (\n        <>\n            <Container className="HomeTitleContainer">\n                Ma Th\xc3\xa9matique\n            </Container>\n            <Container className="TableOfContentsLink">\n                <p><Link link={\'/cours\'} internalLink={true} >- Des cours de math\xc3\xa9matiques sur de nombreux sujets</Link></p>\n                <p><Link link={\'/bds-de-jpp\'} internalLink={true} >- Des BDs de Jean-Petit</Link></p>   \n                <p><Link link={\'/jeux\'} internalLink={true} >- Des petits jeux pour s\'am\xc3\xa9liorer</Link></p>            \n            </Container>\n        </>\n    );\n}\n\nexport default Home;\n
Run Code Online (Sandbox Code Playgroud)\n

这是相应的 css 文件 …

html css prerender single-page-application reactjs

8
推荐指数
1
解决办法
169
查看次数

JSF 2.0.无法在preRenderView事件处理程序中获取POST参数和cookie

我正在努力开发一项服务.

关键是我的index.xhtml应该从HTTP Request获取参数(POST和GET)和cookie.

我尝试过组合<f:metadata><f:event type="preRenderView">像这样:

<f:metadata>  
    <f:event type="preRenderView" listener="#{deConversation.start}"/>  
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

deConversation.start的代码:

public void start(ComponentSystemEvent event) {
    System.out.println("checkLogin");
    HttpServletRequest request = SsoHelper.getRequest();
    String requestSessId = SsoHelper.getRequestSessionId(request);
    String requestRedirect = SsoHelper.getRequestRedirect(request);

    System.out.println("sessId " + requestSessId);

    if (requestRedirect == null || requestRedirect.isEmpty()) {
        requestRedirect = "self";
    }

    if (requestSessId != null) {
        trySessId(requestSessId, requestRedirect);
    }

    externalResourcesHandler.setExternalRedirect(requestRedirect);
    tryToBeginConversation();

    if (!isAuthorized()) {
        SsoHelper.performNavigation("auth");
    }
}
Run Code Online (Sandbox Code Playgroud)

SsoHelper只提供这样的api:

public static String getRequestSessionId(HttpServletRequest request) {
    Map<String, Object> cookieMap = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap();
    String requestDeSessionId = null; …
Run Code Online (Sandbox Code Playgroud)

java jsf prerender jsf-2

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

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与ReactJS进行SEO

我意识到使用react-router的我的ReactJS应用程序没有任何外部链接.搜索引擎无法识别该网站有很多链接内容.Prerender.io似乎是一个很好的解决方案,但我不能让它为我的ReactJS应用程序工作.

prerender.io可以与ReactJS一起使用吗?如果没有,是否还有另一种改善我的网站搜索引擎优化的好方法,而不需要完成所有的渲染服务器端?

编辑:进一步挖掘,我意识到这里的问题是react-router默认使用"#",而不是"#!".是否有可能使react-router与"#!"一起工作?

seo prerender reactjs react-router

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

仅在 Vue 或 Nuxt 项目中为 SEO 预渲染某些页面

我正在用 Vue 或 Nuxtjs 规划一个新项目。我想使用 Firebase Auth/functions/storage/firestore 作为后端,因此在 firebase 上托管也很好。我也很想使用 Vuetify。

Landingpage、About、Contact 必须很容易被谷歌索引,但用户登录后的应用程序与 SEO 无关。

我认为预渲染将是最好和最简单的解决方案。所以我测试了一些例子,但没有设法只渲染某些页面。

我使用 prerender-spa-plugin 来选择路由,但在运行 nuxt build 并部署到 firebase 后,所有路由都被预渲染。

Nuxt App 以通用模式运行:

  mode: 'universal',
Run Code Online (Sandbox Code Playgroud)

为了配置 Webpack,我在 nuxt.config.js 中使用了它:

plugins: [
            new HtmlWebpackPlugin({
                template: './public/index.html',
                inject: false
            }),
            new PrerenderSPAPlugin({
                staticDir: path.join(__dirname, './dist'),
                routes: ['/', '/about'],
            })
        ],
Run Code Online (Sandbox Code Playgroud)

部署版本可以在这里找到。

我想,如果我正在运行 nuxt build 并部署 dist 文件夹,则应该只预渲染 / 和 /about,其余的应该像普通的 SPA 一样。

这是构建一个在登陆页面上对 SEO 友好但在用户登录后成为水疗中心的应用程序的方法吗?

seo render prerender vue.js nuxt.js

7
推荐指数
0
解决办法
949
查看次数

在 Blazor 服务器应用中检测服务器预渲染

OnInitializedAsync有没有办法从生命周期方法中检测 Blazor 组件中是否正在进行预渲染?我知道组件工作流程会调用OnInitializedAsync两次,第一次用于预渲染,第二次用于实际渲染。最后,OnAfterRenderAsync一次性调用该方法进行实际渲染。

但是,我需要检测OnInitializedAsync. 这样我就可以在预渲染中进行一些更改,并在实际渲染中阻止它,反之亦然。

我检查了下面的 GitHub 问题,但没有有效的解决方案。我希望,它应该在像IsPrerendering.

https://github.com/dotnet/aspnetcore/issues/17282

提前致谢。

prerender blazor blazor-server-side

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