Comments 93
И кстати полифилы при максимальных настройках оптимизации занимают около 10-15кб не gzip'нутого кода. Это конечно не классно, но если говорить о 6мб ресурсов и предположить, что полифилы загружены только в одном js файле (ну или в паре-тройке), то вряд ли они являются большой проблемой.
Выйти на Closure Library помогли строковые константы, которые сохраняются при минификации, например, вот такой фрагмент: lCa = "closure_uid_" + ((1e9 * Math.random()) >>> 0)
, который соответствует вот этой строчке. Ну а дальше уже обладая каким-то подобием исходников можно представить, как выглядел этот код до минификации.
Про полифилы соглашусь, в таких объемах кода это экономия на спичках. Но сам факт того, что браузер тратит ресурсы на то чтобы загрузить код, по факту завернутый в if(false) {...}
очень огорчает.
Как ни странно, но вот эти константы оказались обфусцированы. Но есть вот такой код
w.Xg = function(b) {
if (this == b) throw Error(Qh);
if (b && this.Lg && this.Id && this.Lg.Xc(this.Id) && this.Lg != b) throw Error(Qh);
this.Lg = b;
px.Ia.Zg.call(this, b);
};
Соответствует вот этому исходнику:
goog.ui.Component.prototype.setParent = function(parent) {
if (this == parent) {
// Attempting to add a child to itself is an error.
throw new Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);
}
if (parent && this.parent_ && this.id_ && this.parent_.getChild(this.id_) &&
this.parent_ != parent) {
// This component is already the child of some parent, so it should be
// removed using removeChild/removeChildAt first.
throw new Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);
}
this.parent_ = parent;
goog.ui.Component.superClass_.setParentEventTarget.call(this, parent);
};
Здесь видно, что константа goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET
сжалась до Qh
, который инициализируется как Qh = "eb"
.
Пересматривайте свои исходники и избавляйтесь от тех вещей, которые стали уже неактуальными.
Это не сложно делать в действительно своих исходниках либо в исходниках, от и до покрытых тестами. Но в реальности, ковыряясь в чужом коде, написанном пару лет назад, и натыкаясь на костыль, — очень страшно его удалять, потому что не знаешь, всё ли после этого будет хорошо сейчас… через неделю… через месяц.
есть возможность переписать весь код с нуля
Возможность — безусловно есть. Денег и человеко-часов? Далеко не факт.
Переписывание с нуля не добавляет ничего к стоимости продукта здесь и сейчас, и владельцы бизнеса на это смотрят очень косо (и с их точки зрения в общем-то правильно).
Только есть у меня опасения, что этот сценарий не случится…
gmail как почта и десктоп-интерфейс gmail все же разные вещи.
На десктопе, например, именно из-за тяжеловесности gmail перешли на «оффлайн» клиентов и работу по imap (стряхнули пыль с thebat), а так же иногда используем «легкую хтмл версию» ( mail.google.com/mail/u/0/h/1pq68r75kzvdr/?v%3Dlui ), задумываемся о подключении какого-нибудь альтернативного веб-сервиса работающего по imap с gmail.
Вряд ли гмылу от этого жарко или холодно, но тем не менее именно так «варят лягушку». Сначала имап, потом альтернативные веб-сервисы для доступа к имап, потом параллельно другие почтовые сервисы. Проблемы не возникают мгновенно, но зато имеют огромный запас инерции.
натыкаясь на костыль, — очень страшно его удалятьОчень помогает хорошее покрытие регрессионными тестами.
В общем, гугл уже не первый год считает, что у всех пользователей мира гигабитная сеть и 10 ядерные ксеоны.
… двойку за производительность (из максимальных 100 баллов!
Зато дали замечательный пример, чтобы отбиваться от заказчиков, требующих вылизывать page speed до 100
Да, полировать до достижения 100 баллов может и не стоит, но если у вас околонулевой результат – это сигнал каких-то проблем.
Раз есть ie10, значит нет вебкомпонентов.
А YouTube вообще у меня последнее время весело багует- нажимаешь на одно видео справа, а подгружаться начинает какое-либо другое. Если нажимать Ctrl+r открывается то на которое первоначально кликал
Пример, зашел на страницу канала, на котором видео с автоплеем, переходишь на главную-видео с канала начинает играть фоном.
Разработка и остальное укомфортились совсем не так сильно, а вот на серфинге теперь нервов значительно меньше тратится.
Поэтому после 6-8 ядер остальные не добавляют смысла для обычных задач.
6/16/1050
Вот можно ли грохнуть G Suite для mydomain.com и при этом НЕ грохнуть сами гуглоаккаунты вида user@mydomain.com?
Gmail.com открываю раз в квартал. Для всего остального есть десктопный/мобильный клиент.
Так что сложные собесы просто обеспечивают пул разработчиков только лучшими стрелками, да вот менеджмент — менеджмент как обычно…
И обратная совместимость не вина библиотеки, которую использует не только гугл. Если ActiveX не нужен — пожалуйста:
--define goog.net.XmlHttpDefines.ASSUME_NATIVE_XHR=true
, и компилятор автоматом уберёт лишее.Про флаги компиляции интересно. Нашел, что в коде Gmail еще подключается и код для эмуляции addEventListener через attachEvent, для IE8, который тоже можно выключить флагом.
Возникает вопрос: а зачем в 2018 году включать все это по дефолту? Разумнее было бы наоборот, с возможностью включить тем, кому всё еще это нужно. А идеальнее всего вообще использовать конфигурацию вроде browserlist, где пользователи бы просто указывали нужные им браузеры, а полифилы сами конфигурировались исходя из этой настройки, без жонглирования разными флагами.
И, судя по этому факапу с тормозящим веб интерфейсом (кстати, на гугловой же page speed tool — сколько попугаев показывает?), разработчики gmail тоже им не пользуются.
То каждый раз задумываешься: чем эти люди там занимаются? Пользуются ли они своим продуктом?
Попугаев ровно 100 из 100 в десктопной версии и всего 53 в мобильной. Хотя по моим ощущениям все с точностью до наоборот, и мобильная версия вполне быстро грузится и работает
Мало кто помнит, что есть web-версии gmail для смартфонов и планшетов.
Меняем UserAgent на современный планшет, Ctrl+F5.
Вообще не тормозит.
Вот так вот выглядит:
Поэтому не нужно ничего менять, при входе нужно нажать внизу ссылку и Вы попадёте в почтовый ящик почти моментально.
И минус, что эта ссылка присутствует только при загрузке страницы.
Я имею ввиду вполне современную SPA версию gmail, только сделанную для планшетов/смартфонов и гораздо более легкую чем десктопный gmail. Немного отличается лейаутом.
Потому что в эпоху IE6 продукт был моложе и там было меньше кода.
Если разработать путём только докидывания кода сверху, то мы приходим к вот такой ситуации.
Возможно ноут с 16 гигами — это очень круто, но каждая очередная загрузка гмейла — менее секунды. Успеваю увидеть, что конвертик хлопнул дверью и сразу письма.
На 6 ядерном Xeon прокрутка списка сообщений не плавная, и это ухудшилось именно в последний год. 10 лет назад даже на одноядерном CPU всё было как-то быстрее и плавнее в Gmail.
Заглядываем под капот нового Gmail