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

Phoenix78

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

bizzon

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

Yuriy Zymlex

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

bizzon

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

ermax

Client
Регистрация
06.10.2012
Сообщения
143
Благодарностей
52
Баллы
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
Сообщения
329
Благодарностей
124
Баллы
43
Как раз рассуждал про переход на профиль-папки, но что-то теперь задумался. Это же никакого жесткого диска не хватит, хранить столько добра кешированного.
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 285
Благодарностей
624
Баллы
113
Вот мое решение, которое позволило мне сократить размер профиль папок с 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 704
Благодарностей
943
Баллы
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
Сообщения
143
Благодарностей
52
Баллы
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
Сообщения
143
Благодарностей
52
Баллы
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);
    }
}
Я бы не советовал так делать.
Ты предлагаешь чистить профиль когда он загружен уже инстансом, т.е. работать по живому профилю, это может вызвать проблемы с профилем при следующей загрузке.
Лучше как у меня, когда профиль не загружен, ты его чистишь а потом загружаешь.
 

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 704
Благодарностей
943
Баллы
113

Moonwalker

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

ermax

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

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

Moonwalker

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

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Пока ещё в процессе разработки.
Есть ли новости по данному вопросу? Критическому багу 3.5 года, как же так, что нет официального решения вопроса? Как вообще работать с профиль-папками, если размер профилей будет расти по экспоненте. :bn:
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
318
Благодарностей
73
Баллы
28
Есть ли новости по данному вопросу? Критическому багу 3.5 года, как же так, что нет официального решения вопроса? Как вообще работать с профиль-папками, если размер профилей будет расти по экспоненте. :bn:
Поддержу вопрос
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 564
Благодарностей
9 180
Баллы
113
Есть ли новости по данному вопросу? Критическому багу 3.5 года, как же так, что нет официального решения вопроса? Как вообще работать с профиль-папками, если размер профилей будет расти по экспоненте. :bn:
Поддержу вопрос
Есть встроенный механизм ограничения размера профилей, можно прописать в
C:\Users\<Username>\AppData\Roaming\ZennoLab\ZennoPoster\7\Settings\globalsettings.settings.json (там должно быть такое, нужно только добавить StorageQuotaSettings:PoolSizeBytes/n, где n - размер в байтах):

C#:
{
    "clnMainGroup": "ZennoPoster",
    "clnSubGroup": "Chrome",
    "clnName": "EnableFeatures",
    "clnType": "System.String",
    "clnValue": "RunVideoCaptureServiceInBrowserProcess,StorageQuotaSettings:PoolSizeBytes/524288000"
  },

Суть в - StorageQuotaSettings:PoolSizeBytes/524288000 - это будет приблизительным ограничением пула/профиля, в байтах, что соответствует 500 Мб. Соответственно, можно настроить по желанию.

Также, чуть выше приводили еще варианты очистки/ограничения профилей папок:




В совокупности с аргументами: --disk-cache-size=524288000 --media-cache-size=524288000
 
Последнее редактирование:
  • Спасибо
Реакции: material

Vadim3851

Client
Регистрация
30.12.2022
Сообщения
10
Благодарностей
2
Баллы
3
Вот мое решение, которое позволило мне сократить размер профиль папок с 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 остаются на месте, авторизации не слетают.
Вот мое решение, которое позволило мне сократить размер профиль папок с 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 остаются на месте, авторизации не слетают.
Добрый вечер, как ведут себя профили после чистки кэша? Свою "нагуляность" сохраняют?
 

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
Может кому пригодится. профили "projectData/Profile" должны быть. кому логика не понятна, спросите. опишу. сейчас лень.



Лишнее удалите под себя




C#:
bool REDUCE_PROFILE_SIZE = true;

if (REDUCE_PROFILE_SIZE)
{
    // Ожидание завершения работы браузера (если нужно)
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
    System.Threading.Thread.Sleep(6000); // Задержка 6 секунд

    // Получаем путь к профилю
    string profilePath = Path.Combine(project.Directory, "Profile", project.Profile.Login);

    // Список папок для очистки с пояснениями
    string[] foldersToClean = new string[]
    {
        Path.Combine(profilePath, "Default", "AutofillStrikeDatabase"), // База данных для автозаполнения форм
        Path.Combine(profilePath, "Default", "blob_storage"), // Хранилище бинарных объектов
        Path.Combine(profilePath, "Default", "Cache"), // Кэш браузера (можно безопасно очистить)
        Path.Combine(profilePath, "Default", "Code Cache"), // Кэш для скриптов и кода
        Path.Combine(profilePath, "Default", "Download Service"), // Временные файлы для загрузок
        Path.Combine(profilePath, "Default", "Extension Rules"), // Правила расширений
        Path.Combine(profilePath, "Default", "Extension Scripts"), // Скрипты расширений
        Path.Combine(profilePath, "Default", "Extension State"), // Состояние расширений
        Path.Combine(profilePath, "Default", "Local Storage"), // Локальное хранилище данных, можно очистить
        Path.Combine(profilePath, "Default", "Network"), // Временные данные сети
        Path.Combine(profilePath, "Default", "optimization_guide_hint_cache_store"), // Кэш подсказок для оптимизации
        Path.Combine(profilePath, "Default", "parcel_tracking_db"), // База данных для отслеживания посылок
        Path.Combine(profilePath, "Default", "PersistentOriginTrials"), // Данные о персистентных испытаниях
        Path.Combine(profilePath, "Default", "Safe Browsing Network"), // Кэш безопасного серфинга
        Path.Combine(profilePath, "Default", "Segmentation Platform"), // Данные платформы сегментации
        Path.Combine(profilePath, "Default", "Session Storage"), // Хранилище сессий
        Path.Combine(profilePath, "Default", "Sessions"), // Сессии
        Path.Combine(profilePath, "Default", "Shared Dictionary"), // Общий словарь
        Path.Combine(profilePath, "Default", "shared_proto_db"), // Общая база данных протоколов
        Path.Combine(profilePath, "Default", "Sync Data") // Данные синхронизации (можно очистить, но повлияет на синхронизацию)
    };

    // Очистка кеша и временных данных
    foreach (var folder in foldersToClean)
    {
        if (Directory.Exists(folder))
        {
            string[] files = Directory.GetFiles(folder);
            string[] subDirectories = Directory.GetDirectories(folder);

            // Удаляем все файлы в папке
            foreach (string file in files)
            {
                try
                {
                    File.Delete(file);
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении файла {file}: {ex.Message}");
                }
            }

            // Удаляем все подкаталоги в папке
            foreach (string directory in subDirectories)
            {
                try
                {
                    Directory.Delete(directory, true); // true - для удаления с содержимым
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении каталога {directory}: {ex.Message}");
                }
            }
        }
        else
        {
            project.SendInfoToLog($"Папка не найдена: {folder}");
        }
    }
}
PS. Берет профиль папку по текущему логину. те профиль папка должна называтся как и логин.

C#:
Project/Profile/{-Profile.Login-}
 
Последнее редактирование:
  • Спасибо
Реакции: material и p-sergei

Vadim3851

Client
Регистрация
30.12.2022
Сообщения
10
Благодарностей
2
Баллы
3
Может кому пригодится. профили "projectData/Profile" должны быть. кому логика не понятна, спросите. опишу. сейчас лень.



Лишнее удалите под себя




C#:
bool REDUCE_PROFILE_SIZE = true;

if (REDUCE_PROFILE_SIZE)
{
    // Ожидание завершения работы браузера (если нужно)
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
    System.Threading.Thread.Sleep(6000); // Задержка 6 секунд

    // Получаем путь к профилю
    string profilePath = Path.Combine(project.Directory, "Profile", project.Profile.Login);

    // Список папок для очистки с пояснениями
    string[] foldersToClean = new string[]
    {
        Path.Combine(profilePath, "Default", "AutofillStrikeDatabase"), // База данных для автозаполнения форм
        Path.Combine(profilePath, "Default", "blob_storage"), // Хранилище бинарных объектов
        Path.Combine(profilePath, "Default", "Cache"), // Кэш браузера (можно безопасно очистить)
        Path.Combine(profilePath, "Default", "Code Cache"), // Кэш для скриптов и кода
        Path.Combine(profilePath, "Default", "Download Service"), // Временные файлы для загрузок
        Path.Combine(profilePath, "Default", "Extension Rules"), // Правила расширений
        Path.Combine(profilePath, "Default", "Extension Scripts"), // Скрипты расширений
        Path.Combine(profilePath, "Default", "Extension State"), // Состояние расширений
        Path.Combine(profilePath, "Default", "Local Storage"), // Локальное хранилище данных, можно очистить
        Path.Combine(profilePath, "Default", "Network"), // Временные данные сети
        Path.Combine(profilePath, "Default", "optimization_guide_hint_cache_store"), // Кэш подсказок для оптимизации
        Path.Combine(profilePath, "Default", "parcel_tracking_db"), // База данных для отслеживания посылок
        Path.Combine(profilePath, "Default", "PersistentOriginTrials"), // Данные о персистентных испытаниях
        Path.Combine(profilePath, "Default", "Safe Browsing Network"), // Кэш безопасного серфинга
        Path.Combine(profilePath, "Default", "Segmentation Platform"), // Данные платформы сегментации
        Path.Combine(profilePath, "Default", "Session Storage"), // Хранилище сессий
        Path.Combine(profilePath, "Default", "Sessions"), // Сессии
        Path.Combine(profilePath, "Default", "Shared Dictionary"), // Общий словарь
        Path.Combine(profilePath, "Default", "shared_proto_db"), // Общая база данных протоколов
        Path.Combine(profilePath, "Default", "Sync Data") // Данные синхронизации (можно очистить, но повлияет на синхронизацию)
    };

    // Очистка кеша и временных данных
    foreach (var folder in foldersToClean)
    {
        if (Directory.Exists(folder))
        {
            string[] files = Directory.GetFiles(folder);
            string[] subDirectories = Directory.GetDirectories(folder);

            // Удаляем все файлы в папке
            foreach (string file in files)
            {
                try
                {
                    File.Delete(file);
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении файла {file}: {ex.Message}");
                }
            }

            // Удаляем все подкаталоги в папке
            foreach (string directory in subDirectories)
            {
                try
                {
                    Directory.Delete(directory, true); // true - для удаления с содержимым
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении каталога {directory}: {ex.Message}");
                }
            }
        }
        else
        {
            project.SendInfoToLog($"Папка не найдена: {folder}");
        }
    }
}
PS. Берет профиль папку по текущему логину. те профиль папка должна называтся как и логин.

C#:
Project/Profile/{-Profile.Login-}
Добрый вечер, по вашему опыту какие категории файлов весят больше всего? Хотя бы в процентном соотношении, чтобы знать что можно сразу удалить. Спасибо:-)
 

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
Добрый вечер, по вашему опыту какие категории файлов весят больше всего? Хотя бы в процентном соотношении, чтобы знать что можно сразу удалить. Спасибо:-)
C#:
        Path.Combine(profilePath, "Default", "Cache"),
        Path.Combine(profilePath, "Default", "Code Cache"),
        Path.Combine(profilePath, "Default", "Local Storage"),
        Path.Combine(profilePath, "Default", "Session Storage")

удаляй эти и не прогадаешь
 
  • Спасибо
Реакции: material

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
C#:
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
если у кого не работает, удалите эту строку и сделайте перед выполеннем кода. запуск иснтанса с другим типом браузера.

лучше всего это делать да и логично после выполения основой логики.


Либо просто замените сразу ее на

C#:
instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.Firefox52, true); // Запустить браузер Firefox52
 
Последнее редактирование:

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
короче, вот рабочий вараинт для хромиум:


C#:
bool REDUCE_PROFILE_SIZE = true;

if (REDUCE_PROFILE_SIZE)
{
    // Выключаем браузер  и запускаем новый для прерывания текущего процесса
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.Firefox52x64, true); // Запустить браузер Firefox52х64

  // получаем профиль для очистки
  string profilePath = Path.Combine(project.Directory, "Profile", project.Profile.Login);

    // Список папок для очистки
    string[] foldersToClean = new string[]
    {
        Path.Combine(profilePath, "Default", "Cache"),
        Path.Combine(profilePath, "Default", "Code Cache"),
        Path.Combine(profilePath, "Default", "Download Service"),
        Path.Combine(profilePath, "Default", "Local Storage"),
        Path.Combine(profilePath, "Default", "Session Storage")
    };

    // Очистка папок
    foreach (var folder in foldersToClean)
    {
        if (Directory.Exists(folder))
        {
            foreach (var file in Directory.GetFiles(folder))
            {
                try
                {
                    File.Delete(file);
                    project.SendInfoToLog($"Удалён файл: {file}");
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении файла {file}: {ex.Message}");
                }
            }

            foreach (var directory in Directory.GetDirectories(folder))
            {
                try
                {
                    Directory.Delete(directory, true);
                    project.SendInfoToLog($"Удалён каталог: {directory}");
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении каталога {directory}: {ex.Message}");
                }
            }
        }
        else
        {
            project.SendInfoToLog($"Папка не найдена: {folder}");
        }
    }
}

куки, нагуленость и что влияет на детект итд. не удаляется. Удаляются только временный кеш.
 
Последнее редактирование:
  • Спасибо
Реакции: material и Fedor5588

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
318
Благодарностей
73
Баллы
28
короче, вот рабочий вараинт для хромиум:


C#:
bool REDUCE_PROFILE_SIZE = true;

if (REDUCE_PROFILE_SIZE)
{
    // Выключаем браузер  и запускаем новый для прерывания текущего процесса
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // Выключить браузер
    instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.Firefox52x64, true); // Запустить браузер Firefox52х64

  // получаем профиль для очистки
  string profilePath = Path.Combine(project.Directory, "Profile", project.Profile.Login);

    // Список папок для очистки
    string[] foldersToClean = new string[]
    {
        Path.Combine(profilePath, "Default", "Cache"),
        Path.Combine(profilePath, "Default", "Code Cache"),
        Path.Combine(profilePath, "Default", "Download Service"),
        Path.Combine(profilePath, "Default", "Local Storage"),
        Path.Combine(profilePath, "Default", "Session Storage")
    };

    // Очистка папок
    foreach (var folder in foldersToClean)
    {
        if (Directory.Exists(folder))
        {
            foreach (var file in Directory.GetFiles(folder))
            {
                try
                {
                    File.Delete(file);
                    project.SendInfoToLog($"Удалён файл: {file}");
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении файла {file}: {ex.Message}");
                }
            }

            foreach (var directory in Directory.GetDirectories(folder))
            {
                try
                {
                    Directory.Delete(directory, true);
                    project.SendInfoToLog($"Удалён каталог: {directory}");
                }
                catch (Exception ex)
                {
                    project.SendInfoToLog($"Ошибка при удалении каталога {directory}: {ex.Message}");
                }
            }
        }
        else
        {
            project.SendInfoToLog($"Папка не найдена: {folder}");
        }
    }
}

куки, нагуленость и что влияет на детект итд. не удаляется. Удаляются только временный кеш.
Для CEF этот код можно использовать?
 

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
  • Спасибо
Реакции: Fedor5588

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
318
Благодарностей
73
Баллы
28
если нужно, сделаю для хрома
Благодарю, да я увидел что для хромиума, поэтому и спросил) Можно пожалуйста для движка CEF сделать адаптацию кода, я думаю тут многим это будет полезно, я давно наблюдаю за этой темой и тяжко идет в общем понимание, так и не решил проблему с пухнущими папками
 

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28
Благодарю, да я увидел что для хромиума, поэтому и спросил) Можно пожалуйста для движка CEF сделать адаптацию кода, я думаю тут многим это будет полезно, я давно наблюдаю за этой темой и тяжко идет в общем понимание, так и не решил проблему с пухнущими папками
У тебя профили по какому пути?


/папка проекта/Profile/{-Profile.Login-}

сойдет?
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
318
Благодарностей
73
Баллы
28
У тебя профили по какому пути?


/папка проекта/Profile/{-Profile.Login-}

сойдет?
Да, именно такая структура - проект/profile (в нем папки с профилями)

{-Profile.Login-} - а вот это что означает в пути?
 

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
224
Благодарностей
36
Баллы
28

Вложения

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