2011-11-23 22 views
5

在我的网站上,我提供了零售库存目录。我想把数据处理的负担和在客户端浏览器上渲染库存,以减少我的服务器端处理和带宽。我也希望这些内容能够被bot抓取。(javascript/else/noscript iframe)来减少服务器处理?

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

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

2:如果JavaScript是不启用,处理数据服务器端:

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

此外,请确认如果启用Javascript,iframe将不会被加载。如果浏览器无论如何处理它,那就会挫败我的目标。

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

感谢, Skibulk

+0

你说这里有多少数据?如果您在每次加载页面时向客户端发送50兆字节的产品数据,您所做的所有事情都会让用户恼火,并大幅增加您的带宽帐单。 –

+0

没有数据块很小,通常只是一个来自mysql查询的搜索结果集。这是真实情况的抽象。我实际上将成为提供域名的服务,为潜在的数百家商店提供库存搜索服务。这可能相当于我试图减少的多余的服务器端处理。 – skibulk

回答

1

请确认是否启用JavaScript

是否显示<noscript>内容采取的是浏览器的决定,即IFRAME就不会被加载。这意味着无论客户是否决定展示它,您仍然会处理并下载“php处理脚本”的结果。

真的,你将不得不有一个指向源页面的iframe,所以只有当客户端决定应该显示<noscript>块时才会加载它。

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

请确认谷歌机器人将抓取的iframe。我想 iframe作为加载页面的一部分被索引,而不是一个单独的页面

很遗憾,这是不可能的。

您的服务器上仍然有一个显示内容的页面,但它将被编入索引的正确地址,而不是您嵌入iframe的页面的一部分。例如,想象这是用于“ PageA“

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

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

你可以通过使用规范的meta标签在某些情况下,解决这个问题:

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

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

另一种方法!

如果您有大量库存,最好引入分页结果的概念。然后,您可以拥有一个可运行的非JavaScript页面,并链接到更多的库存页面。如果您认为它为访问您的网站的人增加了价值,那么您可以使用JavaScript截取分页操作并使用其他方法获得结果。

0

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

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

此外,Google无法将iframe作为网站的一部分编入索引,这是正确的。