Если кому интересно посмотреть сайт с турболинками и без: old.oratorica.ru/ (Первая загрузка может быть долгой, там выключается сервер, когда в течение 15 минут не заходит никто. Потом будет нормально.)
и oratorica.ru/ (Турболинки и много других оптимизаций)
Если бы проблемы, описанные в этой статье были хотя бы десятой частью… Я недавно по этому поводу писал, просто положу это здесь: borisstaal.com/blog/2013/01/18/dangers-of-turbolinks/. Турболинки – это стильно, модно, молодежно, но будьте аккуратны.
Спасибо, что поделились ссылкой! Было очень интересно почитать и открывшиеся проблемы меня ужаснули. Очевидно, что гем очень сырой, но есть надежда на то, что его-таки доработают до приемлего состояния.
В перепалке в твиттере по результату этой статьи, @dhh обещал, что @sstephenson сделает нормальный коллектор мусора при смене страницы. Но, увы, это практически невозможно сделать хорошо. Как я и писал в этой статье, либо он станет еще одним микро-фреймворком, либо под него начнут писать Rails-специфичный код. В любом случае, посмотрим как ситуация будет развиваться. В интересное время живем.
Одного не могу понять — зачем Turbolinks хранит 10 снимков DOM деревьев, если это все в итоге ломает?
Писать специфичный код под гем в большинстве своем будут только люди, твердо решившие начально проектировать приложение на Rails 4/Rails 3 с ним с самого начала, как мне видится. С такими проблемами Turbolinks почти невозможно интегрировать в крупные приложения.
Ломает все не только это, это завершающий гвоздь в крышку гроба. Хранит он их по очень простой причине – это кэш для события «назад». В этом ведь смысл Турболинков – скорость.
А что до тех, кто будет его писать, вот вам пример: twitter.com/karthik_ak/status/292935068631044098. Люди просто используют то, что им дают. Хорошо это (coffee, sprockets), плохо это (prototype, например) – не важно. «Rails has beome a trendsetter.» – это ведь действительно так. Только это больше ответственности, чем некоторые думают. И, как по мне, это опасно для комьюнити очень.
Турболинкс весьма убог по своей идее. Его единственный плюс в том, что простые приложения (и простые не всегда) работают из коробки.
Если уж на то пошло, то очень часто хочется обновить только определённую область страницы, например при пагинации или фильтрации. Мы в компании применяем что-то подобное (History API + AJAX) с начала 2012 года, после выхода Turbolinks решили и наше решение завернуть в gem, вот что получилось https://github.com/igor-alexandrov/wiselinks.
Не за что! Рады слышать отзывы.
В ближайшее время напишем пост о разных случаях использования Wiselinks, в том числе о разных «подводных» камнях и способах их решения.
Жалко в голосовании нет, что я использую другую библиотеку реализующую pjax.
Я считаю, что если используется pjax, то это отличны способ добавить нормальные анимации переключения страниц — вспышки при загрузке современных страниц не очень приятно. Хотя понятно, что анимации нужно прописывать отдельно, а идея turbolinks — дать счастье всем и сразу.
В случаях когда по ссылке нужно перейти обычным способом, можно добавить параметр data-no-turbolink=«true» к контейнеру, тогда все ссылки внутри будут вызывать полную перезагрузку страницы.
Как пример из хелпа поисковика:
Навигация через скрипты. Наиболее распространенным способом размещения ссылки является HTML тег. Но существуют и другие способы навигации между страницами. Например, можно использовать технологии JavaScript или Flash. Робот Яндекса не переходит по таким ссылкам, поэтому следует дублировать ссылки, реализованные при помощи скриптов, обычными текстовыми ссылками.
В HTML-коде страницы остаются обыкновенные ссылки. JavaScript'ом обрабатываются события click всех ссылок.
Отключен JavaScript => нет обработчика => обыкновенные ссылки.
Тогда уж говорите, что «похоже» означает тождественность: This is similar to pjax, but instead of worrying about what element on the page to replace, and tailoring the server-side response to fit, we replace the entire body. (из описания гема)
Нет никакой разницы в том, что использовать, техническая реализация на базе pjax состоит всего лишь в нескольких строках. Также стоит упомянуть о поддержке браузеров. И если уж речь идет об ускорении, то лучше ручками говорить серверу какую часть страницы обновлять. Часто как раз во внешний лейаут входят нагруженные вещи, которые вычислять каждый раз нет смысла — надо обновлять лишь контентную часть страницы.
Как к такой технологии относятся поисковики? Мне кажется велика вероятность получить бан от какого-нибудь Гугла или Яндекса, так как с их точки зрения это очень сильно смахивает на клоакинг — подмену контента для поисковиков.
Тонкости Rails 4 — Turbolinks