#windows #cmd
Сценарий: Допустим, на некоторой шаре лежит какой-то *.exe файл. Из своей программы я запускаю командную строку, где запускаю данный *.exe с передачей аргументов. *.exe делает какую-то работу и закрывается и так N-раз. Вопрос в том: При каждом обращении к *.exe я его буду "скачивать" в ОЗУ по новой или ОС его закеширует?
Ответы
Ответ 1
Любопытно, потестировал у себя в сети, вот что получил: При обычном запуске *.exe из сетевой папки его кеширования не происходит; Однако, если запущенная программа уже есть в памяти (висит как процесс) — файл не гоняется по сети при запуске второго экземпляра. Причём это работает, даже если запускать тот же файл, но с другими параметрами. Как вывод — очевидный костыль: запустить одну копию программы, чтобы она висела в памяти, и последующие копии не гонялись по сети. При необходимости воспользоваться приостановкой процесса или даже запуском под отладчиком, если программа имеет тенденцию самостоятельно закрываться слишком быстро. А теперь перейдём к нормальному решению. В Windows встроен механизм автономных файлов, позволяющий работать с сетевыми папками без доступа к сети (т.е. механизм кеширования). Настраиваться он может с обеих сторон. 1) Владелец сетевой папки может: Разрешить кеширование (по умолчанию); Полностью запретить кеширование; Сделать его принудительным для всех открываемых сетевым пользователем файлов. Настраивается это так: Компьютер → Управление → Общие папки → Общие ресурсы → Свойства → Настройка автономного режима 2) Со стороны пользователя можно: В проводнике выбрать нужный файл и в контекстном меню поставить галочку на пункте «Всегда доступно автономно» Централизованное управление всеми файлами, для которых настроен автономный доступ, есть в Панели Управления, в разделе Центр Синхронизации → Автономные файлы.Ответ 2
Сам по себе SMB не может чтото закешировать(может кроме метаданных). Чтобы происходило кеширование файлов, нужно настроить чтото вроде BranchCache
Комментариев нет:
Отправить комментарий