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

(javascript/else/noscript iframe)以减少服务器处理?,javascript,html,iframe,noscript,inventory,Javascript,Html,Iframe,Noscript,Inventory,在我的网站上,我提供零售库存目录。我想将数据处理和呈现清单的负担放在客户端浏览器上,以减少服务器端处理和带宽。我还希望内容是机器人爬行 我是这样想象的,但我想知道是否有更好的解决方案: 1:如果启用了javascript,则处理数据客户端 2:如果未启用javascript,则处理数据服务器端: <noscript> <iframe> php processing script </iframe> </noscript> php处理脚本 另外

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

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

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

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

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

php处理脚本
另外,请确认如果启用了Javascript,将不会加载iframe。如果浏览器仍然处理它,那么这就违背了我的目标

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

谢谢,
Skibulk

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

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

另外,你也可以说谷歌不会将iframe作为你网站的一部分进行索引

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

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

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

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

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

遗憾的是,这是不可能的

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


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

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

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

当放置在HTML页面的
中时,此标记请求爬虫在提供的替代地址下对内容进行索引。当两个页面上出现相同的内容,但您希望其中一个成为搜索结果的主控内容时,通常使用此选项。我不知道在你的上下文中使用它是否会被爬虫视为“黑帽子”,因为上下文是微妙的不同

另一种方法


如果您有大量的库存,那么最好引入分页结果的概念。然后,您就可以拥有一个工作的非JavaScript页面,其中包含指向更多库存页面的链接。然后,您可以使用JavaScript拦截分页操作,并使用另一种方法获得结果,如果您认为这会为访问您网站的用户增加价值。

您在这里谈论的数据量是多少?如果你在每次页面加载时都向客户端发送50兆字节的产品数据,那么你所做的只是让你的用户恼火,并大大增加了你的带宽账单。不,数据块很小,通常只是mysql查询的搜索结果集。这是对真实情况的抽象。我将实际成为romote域,为数百家商店提供库存搜索服务。这可能会导致我试图削减的服务器端处理量过多。
<link rel="canonical" href="PageA">