Это очень мало связано с powershell и всем, что связано с вашими данными, и тем, насколько важно их обновить.Простая схема кэширования будет состоять в использовании системы, основанной на времени, при которой через N минут запрос к уровню данных вашего бэкэнда получит новую копию и сбросит таймер.Кажется, у вас уже есть представление о том, какими должны быть ваши конкретные правила.Я не думаю, что две последовательные команды «dir» всегда должны приводить к двум извлечениям из резервного хранилища, но вы так думаете для своей системы.Так сделай так.
ОБНОВЛЕНИЕ
Возможно, простой руководящий принцип может заключаться в том, что вы должны обновлять данные только один раз для каждой команды провайдера.Список встроенных команд, которые работают с элементами провайдера, состоит из:
- Clear-Item
- Copy-Item
- Get-Item
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Rename-Item
- Set-Item
Кроме того, список встроенных команд, работающих с элементом поставщика properties , состоит из:
- Clear-ItemProperty
- Copy-ItemProperty
- Get-ItemProperty
- Move-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Rename-ItemProperty
- Set-ItemProperty
И, наконец, для чтения / записи контента мы используем:
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
Каждая из этих команд имеет соответствующий метод в NavigationCmdletProvider (для иерархических хранилищ данных), и именно здесь вы можете захотеть перезапуститьсвежие ваши данные.При реализации методов New / Move / Rename / Remove / Set / Clear и других методов изменения данных следует использовать методологию оптимистичного параллелизма, поскольку экземпляры поставщика в PowerShell не являются единичными;в любой момент в игре может быть один или несколько экземпляров.
Я написал провайдера, который берет свою реализацию из сценария, в котором вам может быть проще создавать прототипы. См. http://psprovider.codeplex.com/
Надеждаэто помогает.