如何确定Sitecore媒体库中我们拥有的图像字节数?

时间:2014-08-08 15:09:55

标签: sitecore sitecore-media-library

我们正在寻找在某种云服务上存储我们网站媒体(此时主要是图像)的选项。但是,我们想知道它可能花多少钱。

作为其中的一部分,我们需要进行传输(在IIS中未启用日志记录,但现在是)以及我们将在服务器上存储的图像总量。

我已经对数据库写了a LINQ query,但我想知道是否有更好的方法来处理这个问题。

App_Data\MediaCache目录检查为Sitecore Database and App_Data Size建议的接受答案,其中也显示了许多配置文件和其他文档,因此可能不太理想。

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:1)

如果您的所有媒体都存储在数据库中,那么通过查看主数据库中的Blobs表,您可以获得非常好的近似值。

EXEC sp_spaceused N'dbo.Blobs';

如果您有混音,则必须查看Media.FileFolder Sitecore设置中的配置位置(默认为/App_Data/MediaFiles)。

答案 1 :(得分:1)

这是@ddysart建议的补充。您可以运行以下查询以查找超过特定大小的媒体内容的数量。

SELECT DATALENGTH([Data]) FROM [Sitecore_DatabaseName].[dbo].[Blobs]
WHERE DATALENGTH([Data]) > <size_in_bytes>

答案 2 :(得分:1)

无论项目是存储在数据库中还是存储在磁盘上,Sitecore都会在您创建或更新媒体项目时在媒体项目定义的Size字段中以字节为单位存储媒体文件的大小。您可以将这些值相加以得出总数。

Unversioned模板的媒体存储在SharedFields表格中:

SELECT SUM(CAST([Value] as INT))
FROM [SharedFields]
WHERE FieldId = '6954B7C7-2487-423F-8600-436CB3B6DC0E'

Versioned媒体存储在VersionedFields表格中。您可能只对最新版本的上传媒体感兴趣,以减少CDN / Cloud中存储的数量:

SELECT SUM(CAST(vf.[Value] as INT))
FROM [VersionedFields] AS vf

INNER JOIN (
  SELECT [ItemId], MAX([Version]) AS [Version]
  FROM [VersionedFields]
  GROUP BY [ItemId]) AS [vf1]

ON vf.ItemId = vf1.ItemId
AND vf.[Version] = vf1.[Version]
WHERE vf.FieldId = '5BE6C122-84C9-4661-A0C9-3718909C8DAD'

请注意,返回的大小以字节为单位。