5

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

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

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

2:如果没有启用javascript,则处理数据服务器端:

<noscript>
<iframe>
php processing script
</iframe>
</noscript>

另外,请确认如果启用了 Javascript,iframe 将不会被加载。如果浏览器无论如何都会处理它,那么这将违背我的目标。

最后,请确认 google bot 会抓取 iframe。我希望 iframe 被索引为加载页面的一部分,而不是单独的页面。iframe 是从一个完全独立的域加载的,所以我担心谷歌可能根本不会索引它。

谢谢, Skibulk

4

2 回答 2

1

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

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

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

<noscript>
    <iframe src="yourserverpage"></iframe>
</noscript>

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

遗憾的是这是不可能的。

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

<noscript>
    <iframe src="PageB"></iframe>
</noscript>

此 iframe 内的内容将在 PageB 中编入索引,而不是作为 PageA 的一部分。

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

<link rel="canonical" href="PageA">

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

另一种方法!

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

于 2011-11-23T15:29:49.917 回答
0

生成页面时仍会调用 PHP 代码。您需要为指向不同页面的 iframe 提供 url,而不是在 iframe 中嵌入 HTML 以推迟执行。即使那样,我也不确定是否不会获取 URL。你必须尝试一下才能确定。使用 Firefox/Firebug 查看是否在页面加载到备用 url 时发出请求。

<noscript>
<iframe src="/example.com/deferred-load.php">
</iframe>
</noscript>

此外,您是正确的,Google 不会将 iframe 索引为您网站的一部分。

于 2011-11-23T15:17:59.730 回答