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

时间:2011-11-23 15:14:53

标签: javascript html iframe noscript inventory

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

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

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

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

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

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

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

谢谢, Skibulk

2 个答案:

答案 0 :(得分:1)

  

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

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

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

<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">

当放置在HTML页面的<head>中时,此标记会请求抓取工具在提供的替代地址下索引内容。这通常在两个页面上显示相同内容时使用,但您希望一个人成为搜索结果的主人。我不知道在你的上下文中使用它可能会被爬虫视为“黑帽子”,因为上下文略有不同。

另一种方法!

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

答案 1 :(得分:0)

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

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

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