Вооружившись новыми знаниями, я переписал блог с нуля и перевёл его с домашнего сервака на нормальный хостинг. Этот пост - первый написанный через новую админку, которую я запилил на днях.
Пока что основных видимых нововведений 3:
- Новый дизайн
- RSS-лента (доступна по адресу [http://vizvamitra.ru/articles/feed])
- Полноценные комментарии disqus'а
Среди невидимых отмечу одну оптимизацию: в mongodb 2.6 появилась возможность записывать результаты аггрегации/map-reduce'а сразу в коллекцию, в связи с чем я переделал логику подсчёта тэгов. Сейчас тэги хранятся в двух местах: в самой записи поста в виде массива строк и в коллекции tags в виде следующей структуры:
{
"_id": "8734081734...",
"name": "rails",
"count": 7
}
При создании/редактировании поста в случае, если тэги изменились, происходит их пересчёт с занесением в коллекцию тэгов (реализован через ActiveJob, так что не тормозит сохранение поста). На главной странице в виджете с популярными тэгами вместо того, чтобы каждый раз считать, я беру самые популярные тэги из этой коллекции.
При поиске же постов по тэгу уже используется массивы тэгов, содержащиеся в постах. Денормализация ради производительности.
Он это, конечно, не всё. Внутри всё переписано с нуля и текущее состояние дел - только начало