2016-06-24 2 views
0

У меня есть сайт, работающий на эластичном бобовом элементе Amazon с помощью Nodejs. В другом экземпляре EC2 у меня есть настройка prerender, как указано здесь https://prerender.io/documentation.Prerender не дает предварительно загруженные страницы при работе с _escaped_fragment_ = или Open Graph Object Debugger

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

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.

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

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

+0

Это выглядит правильно, и поскольку ваш сервер обслуживает предварительно загруженную страницу, он должен работать правильно. Какой вопрос вы видите? –

+0

Я думаю, что проблема, почему отладчик Facebook Open Graph не работает, имеет какое-то отношение к времени, затраченному на предварительную проверку страницы. Я думал, что разница в журналах свидетельствует о некоторой ошибке в предварительном обучении. Также, когда я запускаю http: // myprerenderserverpath: 8080/http: //example.com/somepage atleast, я вижу, что мета-контент моей страницы загружен в 329 мс, но при запуске с http://example.com/somepage/? _escaped_fragment_ = занимает больше 10 секунд, что приводит к таймауту. –

ответ

0

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

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

PreRender/Библиотека/server.js

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

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

По-прежнему искать более чистое решение.

Смежные вопросы