Pull to refresh
30
0
Станислав @CyberAP

Фронтенд-разработчик

Send message

Не понимаю этого сравнения. При логике на клиенте мы можем очень быстро реагировать на действия пользователя (например показать спиннер или реализовать Optimistic UI), запрос может выполниться гораздо позже чем пользователь увидит отклик в интерфейсе. С логикой на сервере мы этого сделать не можем, а задержки в отклике у подходов отличаются на порядки. И если задержки на клиенте мы можем оптимизировать потому что это наша зона ответственности, то с задержками по сети всё куда сложнее и уже выходит далеко за пределы области фронтенда.

У всего этого есть фатальный недостаток (то, из-за чего все Rails-приложения ощущаются заторможенными) — задержка по сети: https://gist.github.com/jboner/2841832

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

Мы делали замеры и сравнивали разметку в виде дерева, и виде плоского списка. По производительности никакой разницы мы не отметили. Вывод о том что пока не загрузились дочерние комментарии браузер не может отрендерить родителя неверен, иначе бы у нас не работал стриминг. В то же время у плоского списка есть недостатоки: данные нужно постоянно нормализовывать, а для работы сворачивания нужно будет перерисовывать вообще все комментарии, чего очень хотелось бы избежать (об этом рассказано в секции про функциональные компоненты).

Думаю стоит сделать уточнения почему нельзя сравнивать эти два абсолютно разных подхода. Вот какие ограничения у нас были при решении проблемы долгой загрузки комментариев:

  1. Наше решение желательно должно было работать на Vue, т.к. весь проект уже был написан на нём и Vue себя очень хорошо зарекомендовал. Единственное проблемное место с которым мы столкнулись это отрисовка и гидратация очень больших списков (и тем более деревьев). Именно эту конкретную проблему мы и хотели решить, желательно не переписывая при этом весь проект на другой стек технологий, ведь всё остальное нас вполне устраивало. Мы рассматривали другие решения которые бы могли помочь с этой проблемой, но только как запасной вариант, если ничего не поможет. Как потом выяснилось — это вполне реально сделать на Vue.

  2. Взаимодействие с комментариями не должно деградировать. Это значит что мы не можем использовать кастомный скролл или виртуализацию DOM. Последнее не подходит для текста, т.к. там нет поиска и есть проблемы с выделением текста. К тому же оно совершенно не подходит для индексации поисковиками. Это одно из первых решений которое мы отбросили.

Пример со ссылкой на комментарий из другой статьи на самом деле баг который мы починим. Она не должна открываться в режиме SPA. Спасибо что обратили на это внимание.

Спасибо за репорт, при таком обновлении страницы действительно не оптимизировали работу комментариев, будем улучшать. :) Чтобы работало быстро можете попробовать обновить с помощью браузерной кнопки «Перезагрузить страницу».

Индексация очень важна для Хабра, поэтому конечно же мы об этом тоже подумали. При индексации статьи поисковики всегда видят ссылку на страницу с комментариями, а уже там они рисуются сразу.

Можете пожалуйста уточнить ваш браузер и ОС? И если не сложно записать скринкаст как вас перекидывает в начало страницы при обновлении?

Подход когда мы дёргаем метод чтобы получить значение поля как раз не является стандартным во вью из-за постоянных пересчётов. Всё же правильнее будет создать новый computed с уже посчитанными полями.

С классами внутри состояния компонента будут две проблемы: неожиданные потери реактивности, два источника правды (состояние компонента и состояние всех классов).

Если уж идти полностью по пути классов то фабрика тут кажется будет смотреться куда удачнее.

`this.users = await User.getList()`

Где getById сразу вернёт объекты UserModel.

Если перейти по адресу /comments или кликнуть на счётчик комментариев то можно читать комментарии без js.

Всё что нужно сделать Apple для обхода таких ограничений это добавить очень урезанную поддержку PWA и тут уже не придирёшься. И видимость сделают что можно какие-то сторонние приложения ставить, и свою комиссию сохранят. А комиссию с сайтов пускай правительство само решает как собирать.

После видео с анализом психотипов на основании аватарки вконтакте сложно её всерьёз воспринимать.

А теперь можно пойти дальше и спросить: как можно искать по комментариям кроме рендеринга всего списка? Что можно искать в комментариях? Ну и так далее.

Мы остались в той же плоскости, чтобы уйти в другую плоскость нужно задавать другие вопросы. Например: почему пользователям нужно грузить все 2500 комментариев при начальной загрузке страницы?
Не стоит вопрос в полном отказе от оптимизации, но любая оптимизация должна быть осмысленной и продуманной.

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

Сравнивать WSL1 и WSL2 с прямым доступом к файловой системе хоста некорректно. На Phoronix например сравнивали честно (между хостовой файловой системой для WSL1 и виртуальной для WSL2), результаты получились довольно интересные.

Переход на AMD не решит проблему контроля качества и зависимости от поставщика, а вот переход на собственные процессоры вполне.

Спасибо за статью! Осталась нераскрытой тема ограничений при поиске курьера.
Как вы определяете что курьер успеет получить заказ вовремя, как формируются границы области по которым ведётся поиск курьеров? Возможно используете опыт коллег из Яндекс.Маршрутизации? https://habr.com/ru/company/yandex/blog/496818/

Если бы только нефть пользовалась спросом исключительно в России и не было бы госрегулирования отпускной цены на бензин через акцизы.

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Registered
Activity