Приложение Heroku получает трафик при появлении веб-сайта в поиске Google

#ruby-on-rails #heroku

#ruby-on-rails #heroku

Вопрос:

У меня есть приложение heroku, которое работает на бесплатных операционных системах и подключено к www.teamlink.xyz домен. Кажется, что каждый раз, когда веб-сайт появляется в поиске Google, приложение получает трафик, его статус меняется на UP, поэтому оно использует бесплатные часы dyno.

Является ли такое поведение нормальным? Можно ли что-то сделать, чтобы избежать этого?

Вот журналы приложения после поиска в Google…

 2019-03-14T07:00:03.647454 00:00 heroku[web.1]: Process exited with status 143

2019-03-14T10:11:48.458309 00:00 heroku[web.1]: Unidling
2019-03-14T10:11:48.462336 00:00 heroku[web.1]: State changed from down to starting
2019-03-14T10:11:52.952350 00:00 heroku[web.1]: Starting process with command bin/rails server -p 16809 -e production
2019-03-14T10:11:58.943903 00:00 heroku[web.1]: State changed from starting to up
2019-03-14T10:11:58.881149 00:00 app[web.1]: => Booting Puma
2019-03-14T10:11:58.881166 00:00 app[web.1]: => Rails 5.2.2 application starting in production
2019-03-14T10:11:58.881168 00:00 app[web.1]: => Run rails server -h for more startup options
2019-03-14T10:11:58.881234 00:00 app[web.1]: Puma starting in single mode...
2019-03-14T10:11:58.881308 00:00 app[web.1]: * Version 3.12.0 (ruby 2.4.1-p111), codename: Llamas in Pajamas
2019-03-14T10:11:58.881404 00:00 app[web.1]: * Min threads: 5, max threads: 5
2019-03-14T10:11:58.881467 00:00 app[web.1]: * Environment: production
2019-03-14T10:11:58.881673 00:00 app[web.1]: * Listening on tcp://0.0.0.0:16809
2019-03-14T10:11:58.882224 00:00 app[web.1]: Use Ctrl-C to stop
2019-03-14T10:12:00.556395 00:00 app[web.1]: I, [2019-03-14T10:12:00.556231 #4] INFO -- : [60165716-e021-4054-bf81-0458c5b58fc9] Started GET "/" for 78.108.46.167 at 2019-03-14 10:12:00  0000
2019-03-14T10:12:00.557797 00:00 app[web.1]: I, [2019-03-14T10:12:00.557694 #4] INFO -- : [60165716-e021-4054-bf81-0458c5b58fc9] Processing by PagesController#index as HTML
2019-03-14T10:12:00.570712 00:00 app[web.1]: I, [2019-03-14T10:12:00.570566 #4] INFO -- : [60165716-e021-4054-bf81-0458c5b58fc9] Rendering pages/index.html.erb within layouts/application
2019-03-14T10:12:00.575342 00:00 app[web.1]: I, [2019-03-14T10:12:00.575227 #4] INFO -- : [60165716-e021-4054-bf81-0458c5b58fc9] Rendered pages/index.html.erb within layouts/application (4.5ms)
2019-03-14T10:12:00.579304 00:00 app[web.1]: I, [2019-03-14T10:12:00.579206 #4] INFO -- : [60165716-e021-4054-bf81-0458c5b58fc9] Completed 200 OK in 21ms (Views: 10.6ms)
2019-03-14T10:12:00.583809 00:00 heroku[router]: at=info method=GET path="/" host=www.teamlink.xyz request_id=60165716-e021-4054-bf81-0458c5b58fc9 fwd="78.108.46.167" dyno=web.1 connect=1ms service=35ms status=200 bytes=33684 protocol=http
2019-03-14T10:12:00.918795 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink1-c577c6f42390bafc9a3ae4449c5dc3c5e8b8274499fececbbb2459c1540bdbf5.png" host=www.teamlink.xyz request_id=59432522-abaa-4716-b550-527414017f4f fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:00.913219 00:00 heroku[router]: at=info method=GET path="/assets/application-1a3ba655fd7444ccd9a19c80bc6ac655725ac32db81710749e3edb7b911ab7c8.js" host=www.teamlink.xyz request_id=22360c27-f498-4395-a68f-05550fbc3ca8 fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:00.916510 00:00 heroku[router]: at=info method=GET path="/assets/LogoTransparent-34d80e7d46f7a07ab5ac6a4fbd89a1f17e349bffc1ce7042565016d845777dc9.png" host=www.teamlink.xyz request_id=69fed0e0-6216-4b4d-829d-9a63c8b87709 fwd="78.108.46.167" dyno=web.1 connect=0ms service=1ms status=304 bytes=48 protocol=http
2019-03-14T10:12:01.055841 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink3-51ba51be27e4fdcb259cd95556c744f250b39cc3cfe82d8001b8320a50730808.png" host=www.teamlink.xyz request_id=c361c6ed-7ba2-45ff-a735-41624472628c fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:00.911841 00:00 heroku[router]: at=info method=GET path="/assets/application-2f9db7c61263d5cc3ccd205d16cc4007633e699dfc750927a546399d887ca2a6.css" host=www.teamlink.xyz request_id=a57fc598-14ca-411d-962b-8b5a53da8b7a fwd="78.108.46.167" dyno=web.1 connect=1ms service=1ms status=304 bytes=48 protocol=http
2019-03-14T10:12:01.053544 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink2-ad62e650a955481449efcbc557a9a15a42366d8073f0e51668cfd78f82fb183f.png" host=www.teamlink.xyz request_id=e3e954f8-8e2e-4120-b569-eb4019e916eb fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:01.083128 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink6-1d6a88c95229114a8d83a275495b76a4d9693d76f2cd24a75986b98a6b4591ed.png" host=www.teamlink.xyz request_id=9721d7b0-542f-4014-8918-8ad9c18f7e6a fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:01.079936 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink5-fbb0407ca4f599915a01679b060b044d7066bd74a54a58cd816fa3923bfa974d.png" host=www.teamlink.xyz request_id=1ef32db7-c99c-40fd-ae55-678b4e6d4ec3 fwd="78.108.46.167" dyno=web.1 connect=1ms service=2ms status=304 bytes=48 protocol=http
2019-03-14T10:12:01.071262 00:00 heroku[router]: at=info method=GET path="/assets/app/Teamlink4-e3c4bed1d417d2dec279733e24d40880fc59cc6eb83ff8e1bc26987a1443c4e1.png" host=www.teamlink.xyz request_id=5065824a-e6ad-485e-9756-68d5baf61978 fwd="78.108.46.167" dyno=web.1 connect=1ms service=1ms status=304 bytes=48 protocol=http
  

Ответ №1:

Такое поведение является нормальным и связано с предварительной загрузкой ссылок в последних версиях Chrome (и, возможно, в других). Также этот метод годами используется многими «плагинами веб-ускорителя».

Суть в том, чтобы предсказать, по какой ссылке пользователь с наибольшей вероятностью нажмет, и начать загружать ее заранее, чтобы позже ее можно было открыть мгновенно. Таким образом, когда вы появляетесь в топе результатов — вы, вероятно, получите запрос до того, как пользователь нажмет на ссылку.

Комментарии:

1. Хорошо, это интересно. Вы имеете в виду, что это происходит только тогда, когда сайт отображается в топ-результатах, а не когда он отображается с более низким рейтингом?

2. @kouroubel не тестировал это, на самом деле предварительная выборка может поразить все ссылки на странице, если оставить их на некоторое время, но, по крайней мере, мы можем предположить, что ссылка была показана пользователю, если поступил запрос

Ответ №2:

возможно, попробуйте заблокировать Google bot с robots.txt и заблокируйте доступ к вашему сайту. Но это исключит его из индекса и может занять некоторое время для обработки.

Комментарии:

1. Это нормально, я бы не хотел усложнять ситуацию. Мне было довольно любопытно узнать, почему это происходит…