(javascript/else/noscript iframe)减少服务器处理?

ski*_*ulk 5 html javascript iframe inventory noscript

在我的网站上,我提供零售库存目录.我想在客户端浏览器上放置数据处理和渲染库存的负担,以减少我的服务器端处理和带宽.我还希望内容可以被机器人抓取.

我想象它是这样的,但我想知道是否有更好的解决方案:

1:如果启用了javascript,则处理数据客户端

2:如果未启用javascript,请处理数据服务器端:

<noscript>
<iframe>
php processing script
</iframe>
</noscript>
Run Code Online (Sandbox Code Playgroud)

另外,如果启用了Javascript,请确认不会加载iframe.如果浏览器无论如何都要处理它,那么这会打败我的目标.

最后,请确认google bot会抓取iframe.我想将iframe编入索引作为加载页面的一部分,而不是单独的页面.iframe是从一个完全独立的域加载的,所以我担心谷歌可能根本就没有索引它.

谢谢,Skibulk

Fen*_*ton 1

请确认如果启用Javascript,iframe将不会被加载

是否显示内容<noscript>由浏览器决定。这意味着无论客户端是否决定显示它,您仍然会处理和下载“php 处理脚本”的结果。

实际上,您必须有一个指向源页面的 iframe,因此只有在客户端决定<noscript>应显示该块时才会加载它。

<noscript>
    <iframe src="yourserverpage"></iframe>
</noscript>
Run Code Online (Sandbox Code Playgroud)

请确认 google bot 会抓取 iframe。我希望 iframe 作为加载页面的一部分而不是单独的页面进行索引

遗憾的是这是不可能的。

您仍然可以在服务器上有一个显示内容的页面,但它将在其正确的地址处建立索引,而不是作为您嵌入 iframe 的页面的一部分。例如,假设这是“PageA”的 HTML

<noscript>
    <iframe src="PageB"></iframe>
</noscript>
Run Code Online (Sandbox Code Playgroud)

该 iframe 内的内容将在 PageB 上建立索引,而不是作为 PageA 的一部分。

在某些情况下,您可以使用规范元标记来修复此问题:

<link rel="canonical" href="PageA">
Run Code Online (Sandbox Code Playgroud)

当放置在<head>HTML 页面的 中时,此标记会请求爬网程序将所提供的替代地址下的内容编入索引。当两个页面上都出现相同的内容,但您希望其中一个页面成为搜索结果的主控时,通常会使用此选项。我不知道在您的上下文中使用它是否会被爬虫视为“黑帽”,因为上下文略有不同。

另一种方法!

如果您有大量库存,您最好引入对结果进行分页的概念。然后,您可以拥有一个工作的非 JavaScript 页面,其中包含指向更多库存页面的链接。然后,您可以使用 JavaScript 拦截分页操作,并使用替代方法来获取结果(如果您认为这可以为访问您网站的用户增加价值)。