Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Readme.md

Задание 3

Есть веб-приложение, позволяющее находить картинки в формате GIF по ключевым словам и добавлять понравившиеся в избранное. Приложение использует ServiceWorker для работы офлайн, позволяя при отсутствии интернета открыть интерфейс и посмотреть избранное.

Код приложения находится в репозитории на GitHub.

Однако офлайновый сценарий был сломан последовательностью действий:

  • Был проведён рефакторинг под названием «Более надёжное кеширование на этапе fetch», после которого стало невозможно обновить HTML-страницу: у клиентов она стала браться из кеша не только в офлайн-режиме, а всегда.
  • Был сделан фикс этого бага, но перестал работать офлайн-режим: основной документ не загружался при отсутствии сети.
  • Оказалось, что невозможно обновить статику из директорий vendor и assets. Но всё наладилось само собой после того, как был проведён рефакторинг под названием «Разложить файлы красиво». Правда, ServiceWorker перестал обрабатывать запросы за ресурсами приложения: HTML-страницей, скриптами и стилями из каталогов vendor и assets.

К сожалению, все коммиты в репозитории были объединены в один, поэтому необходимо исследовать проблему, локализовать и исправить ошибки.

В этом задании мы хотим проверить вашу способность разобраться в незнакомом коде и API и оценить ваш навык отладки. В качестве ответа пришлите ссылку на fork этого репозитория, где исправен баг и в README дописан раздел про ход ваших мыслей: какие ошибки и как вы нашли, почему они возникли, и какие способы их исправления существуют. Большим плюсом будет, если в файле вы также ответите на вопросы, помеченные в коде ServiceWorker маркером.

Мы не ограничиваем вас в использовании сторонних инструментов и библиотек, но ожидаем комментариев, почему были применены именно они.

Дополнительное задание

Реализуйте возможность переключения в офлайн-режим после первого же запроса, а не после второго, как это происходило в работающем приложении до всех рефакторингов.