В соответствии с вашим описанием вы беспокоитесь о проблеме с производительностью извлечения самого старого капли из контейнера, когда в контейнере содержится большое количество капель. Как упоминает Zhaoxinglu, нет лучшего способа добиться этого. По моему опыту, мы можем попробовать обходное решение, чтобы улучшить производительность.
Поскольку имя blob может содержать символы '/' или '\', которые многие приложения, которые читают blob, интерпретируются как папки, мы могли бы попытаться использовать эту функцию для повышения производительности.
Основная идея заключается в следующем:
а) Согласно Modified-Time блоба для хранения блоб в каталогах, отформатированные как «{документы}/{год}/{месяц}»;
b) Использование префикса, связанного с измененным временем блоба, чтобы исключить перечисление всех блоков в контейнере.
Пожалуйста, обратитесь к следующим шагам, чтобы узнать, может ли он вам помочь.
Вы можете создать свой блоб следующим образом:
Если вы хотите, чтобы получить самую старую блоб, вы можете обратиться к следующему коду:
var results = (from blob in container.ListBlobs(prefix: "docs/2016/1/", useFlatBlobListing: true)
orderby ((CloudBlockBlob)blob).Properties.LastModified
select blob).FirstOrDefault();
результат :
Надеюсь, он может вам помочь, и, пожалуйста, сообщите мне, если у вас есть какие-либо вопросы о вышеуказанных шагах.
вместо listblobs вы можете использовать асинхронную версию ListBlobsSegmentedAsync (String, BlobContinuationToken), но да, вам нужно отсортировать по LastModified. – TusharJ