Как вы, возможно, знаете — вчера(18.06.2013) был день рождения Пола Маккартни (год рождения — 1942). Я — не большой фанат, так что об этом мне сообщили соц. сети — Вконтакте и Фейсбук. Странным было только то, что в Вконтакте писали, что ему исполнился 71 год, в то время как на Фейсбуке — что 70. Решил сверить эти данные с Википедией, и вот что обнаружилось.
Под катом — суть проблемы (ничего критического, но довольно занимательно, на мой взгляд).
По-моему мнению, в этой дезинформации виновата Википедия и вот почему: откройте английскую версию статьи о Маккартни (ссылка) и вы увидите, что его возраст — 70; откройте русскую версию статьи (ссылка) и вы увидите, что возраст — 71 год (на всякий случай, в конце заметки приведу скриншоты подтверждающие это).
Дело в следующем:
- если посмотреть в заголовки ответа на HTTP запрос к английской версии статьи, то можно увидеть, что заголовок Last-Modified содержит значение Mon, 17 Jun 2013 22:03:16 GMT. А еще остальные заголовки указывают, на то, что содержимое страницы было закешировано;
- если посмотреть в заголовки ответа на HTTP запрос к русской версии статьи, то можно увидеть, что Last-Modified равно Tue, 18 Jun 2013 18:29:03 GMT;
- теперь можно посмотреть историю правок обеих статей и, действительно, английская версия была отредактирована накануне дня рождения, а русская — в день рождения Маккартни.
Однако значение возраста должно было поменяться и в английской версии. Попробуем получить свежую версию страницы добавив к запросу "?" (ссылка). Это действительно помогло — теперь отображается правильный возраст (но не на оригинальной странице без "?").
Резюме проблемы: Википедия не отслеживает дату и время изменения страницы, когда изменения происходят в автоматически вычисляемых полях.
Выводы:
- Я проверил еще несколько статей, содержащих автоматическое вычисление возраста, и в некоторых из них проблема повторяется. Значит, возрасту из Википедии нельзя безоговорочно доверять :-)
- Следует учитывать весь динамический контент на странице при разработке системы кеширования. Как мне кажется, вычисляемые поля на страницы Википедии были добавлены позже, после того, как была создана система кеширования. И эта система не была пересмотрена после добавления вычисляемых полей.
- Проблема — не очень серьезная, так как может быть исправлена со временем путем обновления статьи кем-либо из участников Википедии. Сложно найти статьи, которые редактировались очень давно и содержали бы вычисляемые поля.
Скриншоты:
Русская версия
Английская версия
Английская с "?" в конце URL
P.S.
Я не знаю, имеются ли в Википедии другие вычисляемые поля, которые могут быть затронуты проблемой. Также, я не знаю, имеется ли у Википедии баг-трекер, и стоит ли вообще исправлять проблему.
Автор: KingOfNothing