2013-12-13 3 views
2

У меня есть приложение Ruby, которое использует CasperJS для того, чтобы ломать сайты, возвращать результаты и делать некоторые манипуляции с данными.Scaling Phantom/CasperJS утилизация?

Прямо сейчас, мой скрипт CasperJS потребляет около 200 МБ, поэтому это означает, что если я хочу запустить параллельно 5 экземпляров, выполните математику :). Я думаю о развертывании этого в Heroku, но я уверен, что я ударил бы ограничения памяти для рабочего.

Что я могу сделать, чтобы уменьшить использование памяти или сделать ее масштабируемой? Я хочу иметь возможность анализировать более 10 страниц параллельно. Должен ли я взглянуть на другую альтернативу (мне действительно нужно быть безголовым браузером, потому что я хочу посмотреть, где все элементы находятся на странице, а не просто сломать HTML)?

ответ

1

Я сталкиваюсь с той же ситуацией, особенно с фотоинтенсивными сайтами, такими как Pinterest. В этом случае я мог работать только в одном сеансе примерно за 30 минут до того, как PhantomJS потерпит крах при использовании памяти 1 ГБ.

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

Я не думаю, что существует слишком много альтернатив. PhantomJS с его ограничением все еще быстрее, чем Selenium.

+0

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

0

@Hommer Смит,

Думает о Лаке в вашем Frontend, помещая изображения в кэше и освободить работу CasperJS.

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

Только советы Я еще не тестировал решение.

С уважением!