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

Phoenix78

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

bizzon

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

Yuriy Zymlex

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

bizzon

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

ermax

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

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 232
Благодарностей
572
Баллы
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 694
Благодарностей
940
Баллы
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
Сообщения
141
Благодарностей
51
Баллы
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
Сообщения
141
Благодарностей
51
Баллы
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 694
Благодарностей
940
Баллы
113

Moonwalker

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

ermax

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

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

Moonwalker

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

material

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

Fedor5588

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 270
Благодарностей
9 054
Баллы
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

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