Почему некоторые крупные веб-сайты используют недопустимый HTML?

Я заметил, что многие веб-сайты, даже Google и некоторые банковские сайты, имеют плохо написанный HTML без кавычек вокруг значений атрибутов или использование таких символов, как амперсанды, неправильно экранированные в ссылках. Другими словами, многие используют разметку, которая не проверяется.

Мне интересны их причины. HTML имеет простые правила, и это просто ошеломляет, что они, кажется, не следуют этим правилам. Или они используют программы, которые просто выдают код?


person netrox    schedule 08.01.2010    source источник
comment
См. также stackoverflow.com/questions /1967191/   -  person Chetan S    schedule 08.01.2010
comment
Я бы предложил сделать это вики сообщества и, возможно, пересмотреть вопрос, чтобы он был менее спорным, если вы хотите избежать почти неизбежного закрытия.   -  person David says reinstate Monica    schedule 08.01.2010
comment
Я считаю, что большинство сайтов Google основаны на GWT, который представляет собой среду Java, которая автоматически генерирует html+css+javascript.   -  person slebetman    schedule 08.01.2010
comment
Помимо аргументации и субъективности, вы также фактически не правы. Например, HTML 4 и 5 не требуют заключения значений атрибутов в кавычки.   -  person Jonathan Feinberg    schedule 08.01.2010
comment
не аргумент, только почему? Где вики сообщества.. было бы интересно. Спасибо за другую ссылку, Четан.   -  person netrox    schedule 08.01.2010
comment
@ricebowl: Лично я также хотел бы узнать мнение людей здесь. Особенно, когда людям говорят сначала убедиться, что их сайт проверяется, но очень известные сайты, такие как Google, не проходят проверку (в прошлый раз, когда я проверял, у него было 48 ошибок).   -  person slebetman    schedule 08.01.2010
comment
Меня интересует суть вопроса, но вопрос, заданный на данный момент, почему на основных веб-сайтах ужасный html? является аргументированным и субъективным (аргумент состоит в том, что основные веб-сайты обязательно имеют ужасный html; и мнение ужасное, а недействительное - нет). @netrox, «вики сообщества» — это флажок рядом с полем ввода текста для основной части вашего вопроса, если вы нажмете ссылку «редактировать», это должно быть очевидно. Мои извинения за любое оскорбление, которое вы, возможно, восприняли из моего предыдущего комментария, я имел в виду предложение, а не, гм, аргумент. знак равно   -  person David says reinstate Monica    schedule 08.01.2010
comment
Голосование за открытие. Это интересный вопрос с интересным ответом (который я писал, когда его закрыли)   -  person Triptych    schedule 08.01.2010
comment
@Triptych, согласен, я немного отредактировал вопрос и заголовок, чтобы попытаться уменьшить спорные / субъективные аспекты, и проголосовал за повторное открытие.   -  person David says reinstate Monica    schedule 08.01.2010
comment
Вопрос в том виде, в котором он поставлен, все еще вызывает вопрос, утверждая, что отсутствие кавычек вокруг атрибутов написано плохо. Действительный HTML является действительным HTML.   -  person Jonathan Feinberg    schedule 08.01.2010
comment
@ Джонатан, это действительно неважная придирка. Да, вы правы, но попробуйте запустить домашнюю страницу Google через валидатор.   -  person Triptych    schedule 08.01.2010
comment
Голосование за открытие. Я считаю, что это справедливый вопрос, который нужно задать, видя, что люди обижаются на SO и в других местах, когда они не используют действительный HTML.   -  person Pekka    schedule 08.01.2010
comment
Я понимаю, что задал несколько вопросов, которые действительно требуют их мнений/комментариев, а не получения правильного ответа. Есть ли хороший форум, чтобы задавать вопросы такого рода?   -  person netrox    schedule 09.01.2010
comment
@netrox, если честно, я не уверен. Я думаю, что ваш вопрос актуален здесь, в Stackoverflow (см., например: blog. stackoverflow.com/2010/01/stack-overflow-where-we-hate-fun для резюме Джеффа Этвуда о том, что делает хороший/действительный вопрос SO). Причина, по которой я предложил изменить вопрос, чтобы он стал вики сообщества, заключается в том, что не обязательно есть правильный ответ, просто популярные ответы; вики-сообщества, кажется, является общепринятой формой для таких вопросов. Хотя вопросы, которые вы задали, были совершенно справедливы. знак равно   -  person David says reinstate Monica    schedule 09.01.2010
comment
спасибо, рисовая чаша. Джонатан, W3C заявил, что оставлять кавычки для значений атрибутов НЕ рекомендуется и по умолчанию требуется: по умолчанию SGML требует, чтобы все значения атрибутов были разделены либо двойными кавычками (десятичное число ASCII 34), либо одинарными кавычки (десятичное ASCII 39). Одинарные кавычки могут быть включены в значение атрибута, когда значение ограничено двойными кавычками, и наоборот. w3.org/TR/html4/intro/sgmltut. html#h-3.2.2   -  person netrox    schedule 09.01.2010


Ответы (6)


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

Несколько моментов:

Во-первых, люди подразумевают, что причины, по которым Google экономит пропускную способность, носят финансовый характер. Навряд ли. Даже несколько терабайт, сэкономленных в день на странице результатов поиска Google, — это капля в море по сравнению с суммой всех их свойств: Youtube, Blogger, Maps, Gmail и т. д. Гораздо более вероятно, что Google хочет свою страницу результатов поиска, в частности, для максимально быстрой загрузки на как можно большем количестве устройств. Да, байты имеют значение, когда страница загружается миллиард раз в день, но байты также имеют значение, когда ваш пользователь использует спутниковый телефон в Сахаре и изо всех сил пытается получить 1 кбит/с.

Во-вторых, существует разница между кодифицированными стандартами XHTML и т.п. и стандартом де-факто того, что на самом деле работает в каждом браузере, когда-либо созданном с 1994 года. проблемный браузер, на который приходится менее 0,1% их пользователей, для Google эти 0,1% - это, возможно, полмиллиона человек. Они имеют значение. Так что их страница результатов поиска должна работать в IE 5.5. Именно по этой причине они до сих пор используют таблицы для макетов на многих ценных страницах — это по-прежнему макет, который «просто работает» в большинстве браузеров.

В качестве упражнения, будучи стажером в Google, я написал полностью совместимую с XHTML/CSS версию страницы результатов поиска Google и показал ее всем. В конце концов возник вопрос — почему мы обслуживаем такую ​​мешанину HTML? Разве мы не должны вести сообщество веб-разработчиков к стандартам? Ответ, который я получил, был в значительной степени вторым пунктом выше. Google ДЕЙСТВИТЕЛЬНО следует стандарту — не стандартам веб-утопии, как было бы неплохо, а стандарту реальности «это должно работать абсолютно везде».

person Triptych    schedule 08.01.2010
comment
Хороший ответ с пониманием реального мира. - person Ogre Psalm33; 08.01.2010
comment
+1 ... для Google эти 0,1% - это, наверное, полмиллиона человек. Хорошая перспектива (особенно от кого-то внутри). - person Halil Özgür; 07.12.2011
comment
Но тогда я думаю, что они должны обслуживать сломанный HTML только для сломанных веб-браузеров. - person August Karlstrom; 04.10.2013

У Google есть веская причина для написания плохого HTML: каждый символ, который они удаляют со страницы поиска, сэкономит им, вероятно, гигабайты пропускной способности в день.

person Tatu Ulmanen    schedule 08.01.2010
comment
Стоимость полосы пропускания снижена за счет пиринга blogs.broughturner .com/2009/04/ затрудняет оценку того, в какой степени сохранение полосы пропускания конкурирует с другими факторами, которые учитывает Google. - person micahwittman; 08.01.2010
comment
Это не означает, что программист Google использует недопустимый код HTML. Их чистая работа, скорее всего, проходит через фильтр, прежде чем попасть на живой сервер, который удаляет все ненужные символы (как видно из источника их домашней страницы). - person Pierre-Alain Vigeant; 08.01.2010
comment
Этот миф был развенчан много раз, когда было указано, что Google даже не оптимизирует изображение своего логотипа, что сэкономило бы им гигабайты трафика в минуту. - person ЯegDwight; 30.01.2010

Как уже обсуждалось ранее, Google делает это из соображений пропускной способности.

Что касается банков и других корпоративных веб-сайтов, причин может быть несколько:

  1. CMS выдает неверный HTML
  2. Dreamweaver, достаточно сказано.
  3. Старайтесь использовать коммерческие компоненты пользовательского интерфейса, которые были разработаны для работы даже в старых браузерах, поэтому они ошибаются из-за осторожности.
  4. Нет акцента на хороших практиках HTML и Javascript. Многие из них, как правило, являются магазинами Java или .NET без хороших разработчиков пользовательского интерфейса.
  5. Плохо спроектированные элементы управления .NET User и taglibs JSTL.
person Chetan S    schedule 08.01.2010
comment
Вы забыли MS Frontpage. Создает гораздо худший код, чем Dreamweaver когда-либо мог себе представить. Не могу вам сказать, сколько часов я потратил впустую на очистку чужого кода от Frontpage только из-за всего этого мусора, который делает его практически нечитаемым. - person Tom A; 08.01.2010
comment
Или экспортируйте документ Word в формате HTML и загрузите его как веб-страницу. Некрасиво, как черт. - person Pierre-Alain Vigeant; 08.01.2010

Для некоторых веб-сайтов, таких как Google, идеальный код не так важен.

Однако общий размер веб-страницы составляет. Несколько байтов, сэкономленных на коде HTML, могут означать сотни долларов пропускной способности.

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

person almathie    schedule 08.01.2010

Вообще говоря, кодировать веб-сайт легко, и поэтому входной барьер очень низок для неопытных или не программистов. Это позволяет легко создавать нестандартные страницы, и сеть завалена ими. Объедините это с такими инструментами, как Microsoft Frontpage, который еще больше упрощает создание сайта (и еще проще сгенерировать плохой HTML-код), и вы получите неприятную ситуацию.

person Noufal Ibrahim    schedule 08.01.2010