在SenseNet中确定文件大小资源使用情况的最佳方法是什么?

时间:2018-04-24 15:27:41

标签: sensenet

为了适当地为资源使用收费,即数据库存储,我们需要知道客户端文件的大小。有没有一种简单的方法来计算客户端工作区的资源使用情况?

1 个答案:

答案 0 :(得分:1)

如果您只是想知道工作区中文件的大小,可以使用下面的功能,尽管总资源使用率可能要高得多。

计算文件大小 - 有用,但不接近总存储空间。

public static int DocumentFileSizeMB(string path)
{
    var size = 0;

    var results = ContentQuery.Query(SafeQueries.TypeInTree, null, "File", path);
    if (results != null && results.Count > 0)
    {
        var longsize = results.Nodes.Sum(n => n.GetFullSize());
        size = (int)(longsize / 1000000);
    }

    return size;
}

要更好地了解存储空间资源,请在节点上调用SenseNet函数GetTreeSize()。但是,由于与节点大小计算相关的其他内容,但未存储在节点下方,例如索引表,日志条目等,这并未提供全部资源使用。

更好的方法,但仍然没有完全的资源使用。

public static int NodeStorageSizeMB(string path)
{
    var size = 0;

    var node = Node.LoadNode(path);
    if (node != null)
    {
        size = (int)(node.GetTreeSize() / 1000000); // Use 10**6 as Mega, not 1024*1024, which is "mebibyte".
    }

    return size;
}