День рождения Пола Маккартни и баг с кешированием в Википедии

в 7:12, , рубрики: баги, Веб-разработка, кеширование, тестирование, метки: , ,

Как вы, возможно, знаете — вчера(18.06.2013) был день рождения Пола Маккартни (год рождения — 1942). Я — не большой фанат, так что об этом мне сообщили соц. сети — Вконтакте и Фейсбук. Странным было только то, что в Вконтакте писали, что ему исполнился 71 год, в то время как на Фейсбуке — что 70. Решил сверить эти данные с Википедией, и вот что обнаружилось.

Под катом — суть проблемы (ничего критического, но довольно занимательно, на мой взгляд).

По-моему мнению, в этой дезинформации виновата Википедия и вот почему: откройте английскую версию статьи о Маккартни (ссылка) и вы увидите, что его возраст — 70; откройте русскую версию статьи (ссылка) и вы увидите, что возраст — 71 год (на всякий случай, в конце заметки приведу скриншоты подтверждающие это).

Дело в следующем:

  1. если посмотреть в заголовки ответа на HTTP запрос к английской версии статьи, то можно увидеть, что заголовок Last-Modified содержит значение Mon, 17 Jun 2013 22:03:16 GMT. А еще остальные заголовки указывают, на то, что содержимое страницы было закешировано;
  2. если посмотреть в заголовки ответа на HTTP запрос к русской версии статьи, то можно увидеть, что Last-Modified равно Tue, 18 Jun 2013 18:29:03 GMT;
  3. теперь можно посмотреть историю правок обеих статей и, действительно, английская версия была отредактирована накануне дня рождения, а русская — в день рождения Маккартни.

Однако значение возраста должно было поменяться и в английской версии. Попробуем получить свежую версию страницы добавив к запросу "?" (ссылка). Это действительно помогло — теперь отображается правильный возраст (но не на оригинальной странице без "?").

Резюме проблемы: Википедия не отслеживает дату и время изменения страницы, когда изменения происходят в автоматически вычисляемых полях.

Выводы:

  • Я проверил еще несколько статей, содержащих автоматическое вычисление возраста, и в некоторых из них проблема повторяется. Значит, возрасту из Википедии нельзя безоговорочно доверять :-)
  • Следует учитывать весь динамический контент на странице при разработке системы кеширования. Как мне кажется, вычисляемые поля на страницы Википедии были добавлены позже, после того, как была создана система кеширования. И эта система не была пересмотрена после добавления вычисляемых полей.
  • Проблема — не очень серьезная, так как может быть исправлена со временем путем обновления статьи кем-либо из участников Википедии. Сложно найти статьи, которые редактировались очень давно и содержали бы вычисляемые поля.

Скриншоты:
Русская версия image
Английская версия image
Английская с "?" в конце URL image

P.S.
Я не знаю, имеются ли в Википедии другие вычисляемые поля, которые могут быть затронуты проблемой. Также, я не знаю, имеется ли у Википедии баг-трекер, и стоит ли вообще исправлять проблему.

Автор: KingOfNothing

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js