Кэш во всём виноват
раздел «Програмер хочет кушать»
Нет, конечно во всём виноваты проклятые американцы - а кто не верит, загляните на их Amazon - работает гад, как лучшие швейцарские часы, без проблем и быстро так, как сайту Ридеро и не снилось. Не верите? Ну так проверьте! Возьмём для примера одну и ту же мою книгу
и взглянем как она представлена:
- на Amazon - https://www.amazon.com/dp/B0BTM9JGJ6
(успели заметить сколько секунд длилась загрузка?) - на Ридеро - https://ridero.ru/books/kochegary_kosmosa/
(шо, утомились ждать пока загрузится?)
Зато на сайт Амазона я захожу без проблем с любого старья! И на удивление быстро.
Не могу понять в чём секрет этих американцев, ведь:
- сервера Amazon где-то за океаном
- а сервер Ридеро тут поблизости в России
ЧОМУ РИДЕРО ТАК ТОРМОЗИТ ???
Техподдержка Риджеро давно нашла универсальный ответ:
Очистите кэш!
Этот коварный кэш виноват абсолютно во всём, что постигает Ридеро - внезапно не работающие меню, не всплывающие окна сообщений и даже порой пропадающие иллюстрации обложек - о всех о них я расскажу в следующих статьях (а о пропадающих обложках так прямо в следующей статье подробно разберу). Замечу: не всегда и не везде неприятности бывают (может конкретно Вам повезёт посетить сайт Ридеро без проблем) - и всё же у ряда посетителей проблемы имеют место быть.
НО
Евгений, менеджер из техподдержки Ридеро, поведал мне, что обращается к ним совсем мало людей. Ещё бы! Ведь почти всегда всё чего добьётся страждущий от техподдержки, это:
Очистите кэш! У нас всё работает!
И дальше можешь сколь угодно объяснять, что уже чистил кэш и не помогло - они всякий раз отвечают одно и то же, а именно:
Очистите кэш!
Короче человека что называется "футболят". Отмахиваются от него, как от назойливой мухи. Не фиг тут жужжать! Пока несчастный сам не отстанет. И не уйдёт... Куда же? Да к конкурентам вестимо! На наш Озон, на китайский АлиЭкспресс или на тот же американский Амазон - выбор куда уйти день ото дня всё шире. А если потенциального покупателя ещё и отталкивать... Но на зарплате техподдержки это никак не отражается.
А может я не прав?
Может в самом деле кэш виноват?
Таинственный кэш
Что такое этот кэш? Это память браузера, где он хранит недавно закачанное из интернета. Вообще говоря у современных браузеров система обращений к этому запасу старых знаний налажена очень хорошо - браузер сверяет даты и если в интернете файл более новый, то будет закачан именно он, а не тот, что сохранён в кэше.
И благодаря этому Вы всегда видите актуальную свежую информацию.
Однако изредка случаются накладки. Очень редко, но в самом деле бывает так, что браузер вместо обновлённой web-страницы показывает Вам её устаревшую копию из своего кэша.
Почему это не вредит конкурентам?
Может программисты конкурентов знают, как обойти проблемы с этим зловредным кэшем?
Но тогда почему Ридеро не наймёт таких же опытных программистов?
Поговорим за деньги
Итак вывод:
- раз техподдержка Ридеро валит все проблемы на кэш...
- ...значит программисты Ридеро невежи, не умеющие решать эту проблему с кэшем...
- ...которую отлично решают любые другие web-программисты
И почему мы - и авторы и покупатели книг - должны из своего кармана оплачивать неквалифицированных программистов Ридеро?
КТО НАНЯЛ В РИДЕРО НЕСВЕДУЩИХ ПРОГРАММИСТОВ ?
Кэш не при делах
Про кэш достаточно понять одно:
в кэше может оказаться только то - что когда-то туда было закачано из интернета.
Но когда с web-страницы сайта Ридеро внезапно пропадает какой-то элемент - а такое, представьте себе, случалось (и я расскажу об этом в следующих статьях с конкретными примерами) - то вот тут кэш уж точно не виноват. Именно потому что он может показать как было - но не изменить самовольно.
Если бы был виноват кэш - то он так и продолжал бы показывать и картинки и кнопочки. Но коли что-то внезапно пропало - то вот такое кэш сотворить не способен ну никак. Так что большая часть проблем сайта Ридеро отнюдь не в кэше.
Что мне ответила техподдержка
И по наивности своей, я пытался объяснить это техподдержке Ридеро. Потратил несколько дней, обходя разные компьютеры и собирая скриншоты, высылал всё это в техподдержку - ну вот же смотрите, тут работает, а тут нет, вот же она проблема!
Короче: я проделал полноценную работу тестировщика. Бесплатно проделал.
КСТАТИ, ПОЧЕМУ В РИДЕРО НЕТ ОТДЕЛА ТЕСТИРОВАНИЯ ???
(если что - я могу возглавить)
А знаете какова была благодарность?
Поняв, что я их прижал к стенке своими скриншотами - они просто перестали мне отвечать.
А потом и мелко отомстили - как именно я рассказывал в статье "Последня капля"
(прямая ссылка http://SteamAge.ru/pub/ridero/91.html)
Короче, они:
- напакостили,
- потом испугались (ведь это же нарушение договора),
- а затем просто зарыли голову в песок как страус - и нет проблем! Лепота!
Что делать: вариант айнс
Положим, что в самом деле, во всём виновен коварный кэш, неким волшебным образом создающий сам по себе неверно-искажённое изображение web-страниц именно и только на сайте Ридеро. К остальным сайтам кэш относится лояльно - а вот Ридеро невзлюбил.
Как бороться с такой напастью?
Да легче лёгкого!
И мне кажется очень странным, что программисты Ридеро этого якобы не знают...
Рассказываю сокровенную тайну - действуем по шагам:
- смотрим в адресную строку браузера - там адрес страницы
- но если его выделить, то обычно станет видно - за собственно адресом идёт символ знак вопроса, а за ним ещё целая толпа всякого
- вот это всякое - это параметры вызова страницы - и технически они являются частью адреса страницы
Теперь возьмём две страницы:
- a.html?t=0
- a.html?t=1
Для нас имена страниц одинаковые, очевидно же что это один и тот же файл, только лишь вызванный с разными параметрами. Но с точки зрения браузера, раз параметр это часть адреса - то адреса страниц разные, и, стало быть, сами страницы тоже разные.
не воспроизведётся для страницы a.html?t=1
Как попадает пользователь на страницу?
По ссылке!
Ссылку формирует сервер. Значит при формировании ссылки вписываем туда один дополнительный параметр, у которого всякий раз изменяем циферку - и никакой кэш нам уже не помешает.
Возможно программисты Ридеро совсем недогадливые - не знают откуда взять такую циферку, чтоб была уникальна и гарантированно не совпала с другой даже случайно?
Я подскажу: это число микросекунд из системных часов сервера. Сами понимаете: время бежит и невозможно войти в его реку дважды. Вызывается это число в скрипт на сервере одной командой, а какой именно зависит от языка на котором скрипт написан. Но обычно что-то вроде getTime()
Итак:
- получаем число микросекунд
- и дописываем его в адрес страницы в ссылке, которую формирует сервер
- в результате - при клике по этой ссылке посетитель перейдёт на ту же самую страницу, но технически для браузера это другая страница - и потому никакой злой кэш её просмотр испортить не сможет
Всё, задача решена!
Что делать: вариант цвай
А если клиент заходит по прямой ссылке? Там-то число микросекунд не будет прописано сервером! - возразит техподдержка Ридеро и хитро прищурится.
Ну и глупцы! Вы в самом деле не знаете, как решается эта проблема? Хорошо, рассказываю и про это. По шагам:
- Каждую страницу сайта Ридеро формирует сервер в момент запроса к ней от клиента.
- Пусть скрипт на сервере, формирующий страницу, вот прям в самое начало этой страницы вписывает переменную JavaScript - содержащую то самое число микросекунд по мировому времени.
- Далее прям сразу за этой переменной вписываем проверку:
какое время вписано в переменную внутри страницы - а какое реально на компьютере пользователя?
Функция, как получить такое мировое время, встроена в JavaScript, она стандартная - её заново изобретать не нужно. - Если не ошибаюсь, страницы интернет-магазина Ридеро обновляются раз в сутки, значит:
если страница содержит время вчерашнее - то запустить редирект на вызов обновлённой страницы с сервера - это так же делается стандартными функциями JavaScript, доступными на самых лохматых браузерах вроде MSIE 4 или Netscape Navigator 3 Gold.
Если время превышено, то редирект будет вызван в самом начале загрузки страницы. Даже если страница подтягивается из кэша - он всё равно будет вызван. И очень быстро вызван, буквально лишь малейшие доли секунды займёт эта проверка.
Зато гарантированно у нас теперь в любом случае будет всегда грузиться только актуальная страница (а не давно устаревшая её копия из кэща).
И вот тогда уж точно проблемы сразу не станет...
...но ведь тогда у техподдержки пропадёт их излюбленный отмаз про мифический кэш.
Работать придётся...
Ох нет, не за тем ребятки из техподдержки Ридеро приходят на работу - не чтоб работать. Они приходят ЗРЯплату получать.
Зарплату из гонораров авторов вырванную - вот это бездельники из техподдержки Ридеро очень любят. А авторов? А зачем в этой схеме авторы?
(тем более, что как видит читатель после моих объяснений, решается сия проблема элементарно)
Неужели программисты Ридеро не знают вот этого - самых элементарных азов своей профессии?
Если да - то...
ХАНА РИДЕРО С ТАКИМИ ГОРЕ-ПРОГРАММИСТАМИ
Когда Ридеро начинало - вот тогда там боролись за каждого автора!
И техподдержка тогда не лентяйничала.
И даже кэш работе не мешал!
А нынче...
И потому боюсь я: в техподдержке Ридеро засел самый настоящий "крот" - который работает на конкурентов Ридеро и изнутри разваливает работу издательства.
писано суббота 17 сентября 2022г
незначительно отредактировано
в начале 2024г
Алексей «Рекс»