在我的网站上,我提供零售库存目录。我想在客户端浏览器上放置数据处理和渲染库存的负担,以减少我的服务器端处理和带宽。我还希望内容可以被机器人抓取。
我想象这样,但我想知道是否有更好的解决方案:
1:如果启用了javascript,请处理数据客户端
2:如果未启用javascript,请处理数据服务器端:
<noscript>
<iframe>
php processing script
</iframe>
</noscript>
另外,如果启用了Javascript,请确认不会加载iframe。如果浏览器无论如何都要处理它,那么这就击败了我的目标。
最后,请确认google bot会抓取iframe。我想将iframe编入索引作为加载页面的一部分,而不是单独的页面。 iframe是从一个完全独立的域加载的,所以我担心谷歌可能根本就没有索引它。
谢谢, Skibulk
答案 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编入索引作为您网站的一部分。