(javascript / else / noscript iframe), чтобы уменьшить обработку сервера? - PullRequest
5 голосов
/ 23 ноября 2011

На моем сайте я обслуживаю каталог розничных товаров. Я хочу перенести бремя обработки данных и рендеринга инвентаризации в браузер клиента, чтобы уменьшить объем обработки и пропускную способность на стороне сервера Я также хочу, чтобы этот контент можно было сканировать ботами.

Я представляю себе так, но мне интересно, есть ли лучшее решение:

1: Если включен JavaScript, обработать данные клиента

2: Если javascript не включен, обработайте сервер данных:

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

Также, пожалуйста, подтвердите, что iframe не будет загружен, если Javascript включен. Если браузер все равно его обрабатывает, то это побеждает мою цель.

Наконец, подтвердите, что бот Google будет сканировать iframe. Я хочу, чтобы iframe индексировался как часть страницы загрузки, а не как отдельная страница. Iframe загружается из совершенно отдельного домена, поэтому я беспокоюсь, что Google может вообще его не индексировать.

Спасибо, Skibulk

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

подтвердите, что iframe не будет загружен, если Javascript включен

Решение о том, отображать ли содержимое <noscript>, принимается браузером.Это означает, что вы все равно будете обрабатывать и загружать результат вашего «сценария обработки php», независимо от того, решит ли клиент показать его.

Действительно, вам понадобится iframe, указывающий на исходную страницу,поэтому он будет загружен только в том случае, если клиент решит, что должен быть показан блок <noscript>.

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

, пожалуйста, подтвердите, что робот Google будет сканировать iframe.Я хочу, чтобы iframe индексировался как часть страницы загрузки, а не как отдельная страница

К сожалению, это невозможно.

На вашем сервере все еще может быть страница, котораяотображает содержимое, но оно будет проиндексировано по правильному адресу, а не как часть страницы, в которую встроен iframe. Например, представьте, что это HTML-код для «PageA»

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

Содержимое внутриэтот iframe будет проиндексирован в PageB, а не как часть PageA.

В некоторых случаях это можно исправить, используя канонический метатег:

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

При помещении в <head>этой HTML-страницы этот тег запрашивает сканеры проиндексировать содержимое по указанному альтернативному адресу.Это обычно используется, когда на обеих страницах появляется одинаковое содержание, но вы хотите, чтобы оно было главным для результатов поиска.Я не знаю, может ли использование его в вашем контексте быть "черной шляпой" для сканеров, поскольку контекст немного отличается.

Альтернативный подход!

Если у вас большой инвентарьВозможно, вам лучше внедрить концепцию разбивки на страницы результатов.После этого вы можете получить рабочую страницу без JavaScript со ссылками на другие страницы инвентаря.Затем вы можете использовать JavaScript для перехвата действия подкачки и использовать альтернативный метод для получения результатов, если вы считаете, что это повышает ценность людей, посещающих ваш сайт.

0 голосов
/ 23 ноября 2011

Код PHP будет по-прежнему вызываться при создании страницы. Вам нужно указать URL-адрес для iframe, указывающий на другую страницу, а не встраивать HTML-код в iframe, чтобы отложить выполнение. Даже тогда я не уверен, что URL не будет получен. Вы должны попробовать это, чтобы убедиться. Используйте Firefox / Firebug, чтобы узнать, выполняется ли запрос при загрузке страницы на альтернативный URL.

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

Кроме того, вы правы в том, что Google не будет индексировать iframe как часть вашего сайта.

...