Несколько месяцев пользователи OneDrive for Business жалуются на странную проблему: веб-приложение очень медленно открывается и неторопливо работает под Linux (Chrome/Firefox). Но скорость работы приложения резко возрастает, если изменить user-agent на Windows.
26 ноября 2016 года один из пользователей приводил такой пример. На Ubuntu/Linux 16.04 + Chrome/Firefox (последняя версия) он открывает:
https://<my_company>-my.sharepoint.com/personal/<my_user>/_layouts/15/onedrive.aspx
В течение двух минут UI не откликается, загрузка CPU на 100%, сетевая панель показывает загрузку страницы около 100 МБ.
Если изменить user-agent в браузере, указав операционную систему Windows, то всё работает как положено.
В дальнейшем обсуждении проблему подтвердили другие пользователи. Некоторые были разочарованы таким поведением Microsoft, один сказал о переходе на Google Apps. На этом дискуссия и прекратилась. Как выяснилось, на официальном форуме поддержки трудно добиться справедливости.
Тема снова всплыла 22 марта 2017 года, когда один из пользователей Reddit пожаловался на аналогичную проблему. Он сказал, что использует ноутбук с Linux Mint 18.1 и Firefox 52, а из сервисов Office 365 использует только Word. Это приходится делать, потому что при работе в команде важна совместимость форматов. В отличие от предыдущего пользователя, у него OneDrive всё-таки запускается, хотя работает очень медленно, с жуткими лагами. В то же время на настольном компьютере с Windows 10 таких проблем не наблюдается.
Тогда ему пришла идея попробовать расширение для смены user-agent в Firefox. Он поставил такой user-agent, изменив только операционную систему: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/52 — и проблема чудесным образом решилась. Интерфейс OneDrive вообще не тормозил.
Пользователь сказал, что такой же способ помог и его товарищу. Если вернуть обычный user-agent Mozilla/5.0 (Linux Mint/18.1; WOW64; rv:40.0) Gecko/20100101 Firefox/52, тормоза тоже возвращаются.
Cтранное поведение веб-приложения породило ряд вопросов. Непонятно, как производительность приложения может зависеть от user-agent?
23 марта 2017 года Microsoft наконец-то разъяснила ситуацию. Сотрудник объяснил, что этот баг исправлен. Оказывается, проблема была со страницей StaticLoad.aspx, которая в фоновом режиме подкачивает ресурсы для офисных веб-приложений (это стандартная технология оптимизации в браузерах — предвыборка или префетчинг).
Как выяснилось, из-за нелепой случайности эта страница использовала одну ссылку для предвыборки в браузерах на операционных системах iOS, Chrome OS, Mac, Windows, но для браузеров на операционной системе Linux она скатывалась на альтернативный менее эффективный механизм предвыборки — без оптимизации.
Сотрудник подчеркнул, что проблема исправлена 22 марта в 15:00 PST, это было совершенно неумышленная ошибка — и извинился за возможные неудобства.
В более подробном объяснении сотрудник Microsoft объяснил, что под «менее эффективным» механизмом предвыборки он имеет в виду предвыборку с использованием тегов <object>, <script>, <img>. В этом случае не используется предвыборка ссылок. Именно на такой механизм переходили браузеры под Linux.
Сотрудник сказал, что распознавание браузеров страницей StaticLoad.aspx выполнялось для выбора способа предвыборки, потому что не все браузеры поддерживают наиболее оптимальный префетчинг ссылок. Поэтому некоторых скатывали на предвыборку через теги <object>, <script>, <img>.
Возможно, существовал некий белый или чёрный список — и этот список работал не совсем корректно. Что ж, такие простые программистские ошибки случаются даже у больших компаний как Microsoft. Главное, что компания пусть и с опозданием на полгода-год, но распознала проблему — и исправила её.
«Обновленная» Microsoft декларирует, что очень по-дружески относится к Open Source и к GNU/Linux. Все помнят, как Сатья Наделла сказал: «Microsoft любит Linux». Правда, это не мешает Microsoft продолжать патентные атаки на Linux и выдаивать деньги с Android, но это уже мелочи.
Автор: alizar