Получение самых последних путей, посещенных между сеансами в приложении Rails
У меня есть простое приложение rails без базы данных и контроллеров. Он использует высокое напряжение для маршрутизации запросов, а затем использует javascript для получения данных с использованием хэша params.
Типичный URL выглядит так:
http://example.com/?id=37ed660aa222e61ebbbc02db
Я хотел бы получить десять уникальных URL-адресов, которые пользователи недавно посещали, и передать их для просмотра. Обратите внимание, что я сказал пользователям, предпочтительно через одновременные сеансы.
Есть ли способ получить это с помощью ActiveSupport::Notifications или Production.log? Будем весьма благодарны за любые примеры, в том числе о том, куда лучше всего направлять код!
1 ответ
Я думаю, что Redis идеально подходит для этого. Это одна из баз данных хранилища значений ключей NoSQL, но ее поддержка для части значения, являющейся упорядоченным списком, очередью и т. Д., Должна облегчать сохранение уникальных URL-адресов в списке FIFO при их посещении, ограничивать размер этого списка. (откажитесь от URL в "старом" конце списка) и извлеките самые последние N URL для передачи вашему представлению. Ваш список должен оставаться достаточно маленьким, чтобы он всегда оставался в памяти и был очень быстрым. Вы можете сделать это с помощью memcached или mongo или другого; Я думаю, что было бы лучше, если бы решение сохраняло сохраненные значения в памяти.
Если вы еще не используете Redis (или подобное), может показаться излишним его настройка и поддержка только для этой функции. Но вы можете заставить его платить за себя, также используя его для кэширования, фоновой обработки заданий (Resque / Sidekiq) и, возможно, других вещей в вашем приложении.