Проблема с размером профилей

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 693
Баллы
113
Хромиум... профиль-папки... расширения... это все в бетке и не рабочее... пользуйтесь рабочим функционалом 3-х летней давности, движком CEF :bk:
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
127
Баллы
63

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 379
Благодарностей
3 303
Баллы
113

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
127
Баллы
63

ermax

Client
Регистрация
06.10.2012
Сообщения
119
Благодарностей
38
Баллы
28
Вот мое решение, которое позволило мне сократить размер профиль папок с 600mb+ до 700kb+
Почти в 900 раз.

Первое, это удаление папки '...\Default\Service Worker\CacheStorage'
Удаление папки '...\Default\Service Worker\CacheStorage' приведет к очистке кэшированных данных веб-сайтов, включая возможно кэшированные данные сервис-воркеров.

C#:
bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    string bad_dir = $@"{profilePatch}\Default\Service Worker\CacheStorage";
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);
   
    foreach(string file in files)
    {
        File.Delete(file);
    }
   
    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
Второе, запуск chrome с флагами:
--disk-cache-size=52428800 --media-cache-size=52428800

Это уменьшает размер максимального кеша.


PS. Все куки, и LocalStorage остаются на месте, авторизации не слетают.
 

material

Client
Регистрация
23.03.2021
Сообщения
252
Благодарностей
77
Баллы
28
Как раз рассуждал про переход на профиль-папки, но что-то теперь задумался. Это же никакого жесткого диска не хватит, хранить столько добра кешированного.
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 131
Благодарностей
487
Баллы
83
Вот мое решение, которое позволило мне сократить размер профиль папок с 600mb+ до 700kb+
Почти в 900 раз.

Первое, это удаление папки '...\Default\Service Worker\CacheStorage'
Удаление папки '...\Default\Service Worker\CacheStorage' приведет к очистке кэшированных данных веб-сайтов, включая возможно кэшированные данные сервис-воркеров.

C#:
bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    string bad_dir = $@"{profilePatch}\Default\Service Worker\CacheStorage";
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);
  
    foreach(string file in files)
    {
        File.Delete(file);
    }
  
    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
Второе, запуск chrome с флагами:
--disk-cache-size=52428800 --media-cache-size=52428800

Это уменьшает размер максимального кеша.


PS. Все куки, и LocalStorage остаются на месте, авторизации не слетают.
Можно чуть улучшить и попробовать использовать переменную окружения:


C#:
bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    var browserProfileFolder = project.BrowserProfileFolder;
    if (string.IsNullOrEmpty(browserProfileFolder)) return "";
    string bad_dir = Path.Combine(browserProfileFolder, $@"\Default\Service Worker\CacheStorage");
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);
   
    foreach(string file in files)
    {
        File.Delete(file);
    }
   
    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
 

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 668
Благодарностей
921
Баллы
113
Можно чуть улучшить и попробовать использовать переменную окружения:


C#:
bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    var browserProfileFolder = project.BrowserProfileFolder;
    if (string.IsNullOrEmpty(browserProfileFolder)) return "";
    string bad_dir = Path.Combine(browserProfileFolder, $@"\Default\Service Worker\CacheStorage");
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);
  
    foreach(string file in files)
    {
        File.Delete(file);
    }
  
    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
а можно чуть подробнее - что куда добавить, как использовать? к слову тянет на статью в конкурс - "кейс, как сэкономил на покупке железа")
 

ermax

Client
Регистрация
06.10.2012
Сообщения
119
Благодарностей
38
Баллы
28
а можно чуть подробнее - что куда добавить, как использовать? к слову тянет на статью в конкурс - "кейс, как сэкономил на покупке железа")
Так и так же все понятно.
Попробую объяснить проще.

В своем шаблоне перед запуском инстанса вы запускаете мой код, предварительно присвоив переменной 'profilePatch' путь до вашего профиля который вы будете запускать
Это выглядит так

C#:
string profilePatch =  $@"путь до вашей папки с профилем"; // например D:/Profiles/Profile_1

bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    string bad_dir = $@"{profilePatch}\Default\Service Worker\CacheStorage";
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);

    foreach(string file in files)
    {
        File.Delete(file);
    }

    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
Т.е. логика шаблона такая
C#:
   [ваши блоки  в шаблоне]
   [мой код уменьшения размера папки профиля]
   [запуск инстанса с профиль папкой]
   [ваши блоки  в шаблоне]
 
  • Спасибо
Реакции: Konrod_m

ermax

Client
Регистрация
06.10.2012
Сообщения
119
Благодарностей
38
Баллы
28
Можно чуть улучшить и попробовать использовать переменную окружения:


C#:
bool REDUCE_PROFILE_SIZE = true;
if(REDUCE_PROFILE_SIZE) {
    var browserProfileFolder = project.BrowserProfileFolder;
    if (string.IsNullOrEmpty(browserProfileFolder)) return "";
    string bad_dir = Path.Combine(browserProfileFolder, $@"\Default\Service Worker\CacheStorage");
    string[] files = Directory.GetFiles(bad_dir);
    string[] subDirectories = Directory.GetDirectories(bad_dir);
 
    foreach(string file in files)
    {
        File.Delete(file);
    }
 
    foreach(string directory in subDirectories)
    {
        Directory.Delete(directory, true);
    }
}
Я бы не советовал так делать.
Ты предлагаешь чистить профиль когда он загружен уже инстансом, т.е. работать по живому профилю, это может вызвать проблемы с профилем при следующей загрузке.
Лучше как у меня, когда профиль не загружен, ты его чистишь а потом загружаешь.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 383
Благодарностей
968
Баллы
113
В своем шаблоне перед запуском инстанса вы запускаете мой код, предварительно присвоив переменной 'profilePatch' путь до вашего профиля который вы будете запускать
А не больше смысла в конце перед завершением работы шаблона чистить (ну или и перед запуском, и в конце)? Чтобы не хранить все набежавшее за сессию на диске? Смысл-то именно в хранении, в общем, что в процессе набежит, оно только в процессе и будет место занимать.
 

ermax

Client
Регистрация
06.10.2012
Сообщения
119
Благодарностей
38
Баллы
28
А не больше смысла в конце перед завершением работы шаблона чистить (ну или и перед запуском, и в конце)? Чтобы не хранить все набежавшее за сессию на диске? Смысл-то именно в хранении, в общем, что в процессе набежит, оно только в процессе и будет место занимать.
Я писал об этом здесь

Я бы не советовал так делать.
Ты предлагаешь чистить профиль когда он загружен уже инстансом, т.е. работать по живому профилю, это может вызвать проблемы с профилем при следующей загрузке.
Лучше как у меня, когда профиль не загружен, ты его чистишь а потом загружаешь.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 383
Благодарностей
968
Баллы
113
Я писал об этом здесь
Ну, я имел ввиду все-таки не в процессе, а в конце работы, иначе немного теряется смысл, ибо придется все равно хранить все набежавшее за сессию.
Необязательно же чистить "по живому" )) Закрыть инстанс, "отцепить" профиль, после этого уже очистить.
 
  • Спасибо
Реакции: Konrod_m

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)