![image](https://habrastorage.org/webt/po/xk/b-/poxkb-rkqmbf5bbwdvumx0dfluw.jpeg)
Вчера обнаружил на своём новеньком смартфоне, который использую лишь около месяца, несколько файлов, которые видел раньше только один раз, и то два года назад. Тогда же я их и удалил с концами. По крайней мере, мне казалось, что с концами. А на деле оказалось иначе…
Если вы живете в Центральной России, то наверное, так же, как и я, фоткаете периодически эти волшебные радуги и закаты, которые, видимо, достались нам в качестве компенсации за COVID. Вчера я решил перенести свои шедевры с телефона на ноутбук, чтобы убедиться в том, что это действительно шедевры. Ибо телефон новый, и не ясно насколько качественные снимки он делает, потому что на экране самого телефона снимки всегда выглядят так, будто это обложка глянцевого журнала.
Я подключил телефон к ноутбуку. Выбрал на телефоне опцию «Передача изображений», а на ноутбуке — «Import pictures and videos»… Далее приложение для импорта картинок насчитало на моем телефоне почти 1500 картинок и видосов, хотя сам я сделал только около 80 снимков. Мысленно кинул камень в огород Самсунга, который произвел мой новый смартфон. Потому что мой предыдущий смартфон на голом Андроиде в режиме «Передачи изображений» позволял обнаружить фото и видео только из основного фотоальбома. Чтобы получить все картинки из всех папок нужно было на телефоне выбрать режим «Передача файлов». Так было со старым телефоном. А мой новый аппарат, как оказалось, в обоих режимах передает все фотки и видосы, которые на нем есть. «Ну, ладно» — решил я. — «Посмотрю хоть, что за трэш успел накачать мой смартфон откуда ни попадя». Когда перекачка файлов на ноут закончилась, я засел терпеливо их просматривать. В основном, там был мусор из мессенджеров. Но в какой-то момент я замер от удивления. Потому что увидел картинки, на которые раньше смотрел лишь однажды, причем два года назад. «Наверное, иконки какие-то,» — подумал я. Но нет, у файлов был полноценный размер в несколько мегабайт на каждый файл. Это были оригинальные полноразмерные изображения. Они мне пришли когда-то по электронной почте на ящик, зарегистрированный на Mail.ru. Данные эти были довольно чувствительные. Такие данные я в почте не храню. Поэтому сразу же удалил письмо, в которое были вложены эти картинки.
Но что они делают на моём новом смартфоне, который два года назад даже произведен не был? Провел поиск по папкам телефона. Оказалось, что чувствительные фоточки лежат в директории, в которой кешируются данные приложения «Почта Mail.ru». Ага, все-таки Mail.ru. Если бы оказался какой-то другой источник, я бы сильно удивился. Хорошо, что хотя бы в этом месте магии не случилось. Я, на всякий случай, провел поиск по своему почтовому ящику на Mail.ru. Убедился, что того удаленного два года назад письма там нет.
Такая вот забавная история. Я далек от разработки для мобилок. Не знаю даже, имеют ли приложения под Андроид полный контроль над собственный кешем. И не читал пользовательских соглашений для Андроида и почты Mail.ru. С учетом всего этого, у меня просто как у рядового пользователя возникли следующие — возможно, наивные — вопросы.
- Как этот кеш попал на мой новый телефон? Был ли он скопирован из Google-облака вместе с настройками приложений или же его перестроил на новом устройстве клиент Mail.ru? Второй вариант меня, наверное, порадовал бы меньше. Потому что это означало бы, что у Mail.ru потенциально могут храниться мои файлы, над которыми я не имею контроля. На самом деле, такие ситуации могут возникать на вполне разумных основаниях. Например, если я письмо у себя удалил, а отправитель — нет, то Mail.ru по-прежнему будет хранить все вложения этого письма. Правда, я-то к ним доступа все равно уже не должен иметь
- Почему в кеше задержались «бородатые» данные? Такая ситуация в некоторых случаях является нормальной для кешей, которые основаны на элементарном вытеснении. Например, если место, отведенное под кеш, не закончилось, то при такой реализации нет смысла избавляться от старых данных. Можно просто новые данные дописывать сбоку. Однако не разумнее ли в случае Андроида ввести какой-то период устаревания данных, по истечении которого они будут удаляться? Маловероятно, что приложению понадобятся данные, к которым не обращались, допустим, пару месяцев. При этом если данные чувствительные, то периодическое удаление «старья» может обезопасить пользователя устройства от всяких неожиданностей
- Разумно ли требовать от приложений типа «Почта Mail.ru», чтобы они следили за консистентностью кеша? Ведь, например, если посмотреть почту через браузер, а не специализированное приложение, то данные тоже могут быть закешированы, и при удалении письма удалены не будут. Несмотря на такую возможность, я считаю, что специализированные приложения должны следить за консистентностью кеша. Браузер — штука тупая. Он не знает смысла данных, которые кеширует. А вот специализированное приложение уже владеет полной семантикой данных, которыми оперирует. Если пользователь удаляет письмо из почты, то приложение могло бы позаботиться о том, чтобы инвалидировать кеш
- Кажется, Андроид на уровне системы не позволяет запретить кеширование для всех/конкретного приложения. Но если кто-то знает способ, поделитесь
Было бы интересно услышать мнения по этим вопросам.
От себя добавлю, что кеширование на стороне клиента в принципе вызывает у меня смешанные чувства. С одной стороны, это супер-полезная оптимизация, с другой — кеш позволяет получить доступ к данным приложения, минуя авторизацию в самом приложении. Достаточно пройти или обойти авторизацию на устройстве. Возможно, что для чувствительных данных нужно просто использовать другие приложения, например, HIPAA-compliant. Но чисто на бытовом уровне довольно тяжело осознать все возможные последствия кеширования. Например, ожидал ли я, что в результате импорта фоточек, на моем компе окажутся чужие медицинские данные, которые я честно удалил два года назад? Конечно, нет.
Всем успехов и не забывайте периодически чистить кеш, ибо в теории он может вас подставить каким-нибудь неожиданным образом. Например, завершили вы пару лет назад какую-нибудь предосудительную интрижку, удалили все письма от любовницы, и с тех пор — приличный семьянин. Новую жизнь начали. А затем вместе с женой холодным зимним вечером решили импортировать с телефона теплые летние фоточки. Зашли в папочку на ноуте, а тут на тебе — привет от давно забытой любовницы. Берегите себя!
UPD. Предыдущий телефон был не Самсунг. Внешние карты памяти не использую. В облако бэкапятся только контакты и настройки приложений. Все остальные бэкапы всегда были отключены. В частности, фотоальбом в облако не копируется и данные приложений тоже. Например, мессенджеры восстановились без истории переписок. Всё, что было сделано после покупки нового телефона — это вход в аккаунт гугл и активирование опции восстановления настроек из облака.