Prerender не дает предварительно обработанные страницы при работе с _escaped_fragment_= или Open Graph Object Debugger

У меня есть сайт, работающий на эластичном бобовом стебле Amazon с использованием Nodejs. В другом экземпляре EC2 я настроил пререндеринг, как указано здесь https://prerender.io/documentation.

Я также добавил требуемый путь на моем сервере узлов:

app.use(require('prerender-node').set('prerenderServiceUrl','http://myprerenderserverpath:8080'));

Когда я запускаю: http://myprerenderserverpath:8080/http://example.com/somepage

Я правильно получаю предварительно обработанные страницы. Журналы показывают:

getting images/logo.png
getting images/loader.gif
getting images/favicon.ico
...

и так далее в зависимости от того, какие изображения есть на странице.

Но когда я запускаю то же самое, используя http://example.com/somepage/?_escaped_fragment_=

Я получаю следующие журналы:

getting http://example.com/somepage
got 200 in 10311ms for http://example.com/somepage

и точно так же, когда я запускаю Facebook Open Graph Object Debugger.

Поэтому мои страницы не сканируются.

В чем может быть проблема?


person Swati Pardeshi    schedule 24.06.2016    source источник
comment
Это выглядит правильно, и, поскольку ваш сервер обслуживает предварительно обработанную страницу, он должен работать правильно. Какую проблему вы видите?   -  person Prerender.io    schedule 25.06.2016
comment
Я думаю, что проблема, почему отладчик Facebook Open Graph не работает, связана со временем, затрачиваемым на предварительную визуализацию страницы. Я думал, что разница в журналах указывает на какую-то ошибку в предварительном рендеринге. Также, когда я запускаю http://myprerenderserverpath:8080/http://example.com/somepage по крайней мере, я вижу, что мета-контент моей страницы загружается в течение 329 мс, но то же самое при запуске с example.com/somepage /?_escaped_fragment_= занимает более 10 секунд, что приводит к тайм-ауту.   -  person Swati Pardeshi    schedule 27.06.2016


Ответы (1)


Как обсуждалось с Тоддом здесь (https://github.com/prerender/prerender/issues/319) , на моей странице был какой-то URL-адрес, который так и не вернулся (подозревая запросы socket.io POLL), что вызвало 10-секундное ожидание перед тайм-аутом при предварительной визуализации.

Я уменьшил RESOURCE_DOWNLOAD_TIMEOUT (переменная среды для Prerender) до 4 секунд вместо 10, и теперь отладчик Facebook работает правильно.

пререндер/lib/server.js

var RESOURCE_DOWNLOAD_TIMEOUT = process.env.RESOURCE_DOWNLOAD_TIMEOUT || 10 * 1000;

Я думаю, что любой URL-адрес, который не возвращался, или ресурс, которого ждали, был недостаточно важен для рендеринга страницы. Мои метатеги устанавливаются в первые 3 секунды загрузки, поэтому я правильно получаю теги. Не уверен, что это правильный подход, но, тем не менее, он меня радует :)

Буду искать более чистое решение.

person Swati Pardeshi    schedule 29.06.2016