将 Sitecore 媒体库资源存储在文件系统与存储在数据库中的比较





5.00/5 (2投票s)
我们将了解如何轻松地将 Sitecore 媒体库资源存储在文件系统中,并将其与默认的(存储在数据库中)方法进行比较。
引言
Sitecore(默认行为)将内容树中“媒体库”文件夹内的所有资源存储在数据库中。通过进行一些简单的配置更改,我们可以改变它,将资源存储在文件系统中。
我们将了解如何实现这一点。我们将通过检查各自的优点和缺点来比较这两种方法(文件系统存储和数据库存储),并尝试确定哪种方法适用于哪种场景。
背景
首先,让我们看看 Sitecore 在数据库中存储媒体资源的位置。登录到存在 Sitecore 数据库的数据库服务器。打开 Master DB,有一个 **Blobs 表**。该表将存储所有媒体库资源。
此表有 6 列,其中 2 列需要注意,即 **BlobId 和 Data**。`BlobId` 列包含一个 `GUID`,用于唯一标识一个 blob。Data 列包含 blob 的二进制数据。
因此,当我们上传媒体库中的资源时,Sitecore 会创建一个带有 `media` 字段的媒体项。Sitecore 将实际资源存储在 `blob` 表中,并从该表中获取 `BlobId` 字段值,然后将其放入媒体项的媒体字段中。通过这种方式,Sitecore 将 blob 存储与内容存储分离开来。如果用户需要,Sitecore 可以利用这一概念将媒体存储在文件系统中,而不是存储在数据库中。
如何将媒体资源存储在文件系统中?
Sitecore 将所有媒体库资源存储在数据库中。这是因为 Sitecore 网站的 _web.config_ 文件中存在以下可配置设置。
<!-- UPLOAD AS FILES
Controls whether Sitecore stores media as files or as database records by default.
This setting is ignored if the Media.DisableFileMedia setting is true.
Default: false
-->
<setting name="Media.UploadAsFiles" value="false"/>
要使 Sitecore 将媒体资源存储在文件系统中而不是数据库中,我们需要将上述设置的值更新为 `true`。请参阅下文。
<setting name="Media.UploadAsFiles" value="true"/>
现在,Sitecore 将开始在文件系统中存储资源。默认情况下,它将它们存储在路径“*/App_Data/MediaFiles*”下。Sitecore 也有一个用于更改此设置的可配置设置。请参阅下文。
<!-- MEDIA - FILE FOLDER
The folder under which media files are stored by the system.
Default value: /App_Data/MediaFiles
It should be different from MediaFolder setting
-->
<setting name="Media.FileFolder" value="/App_Data/MediaFiles"/>
我们可以更改上述设置的值,将 blob 存储在文件系统中的任何位置。
数据库存储媒体资源 VS 文件系统存储
那么,我们应该何时使用文件系统存储媒体资源而不是默认的数据库存储?让我们比较一下,以便弄清楚。
数据库存储 |
文件系统存储 |
优点
|
优点
|
缺点
|
缺点
|
学习
考虑到上述两种方法的利弊,可以说,通过将资源存储在文件系统中带来的性能提升,可以忽略因存储在数据库中而可能丢失的 CMS 提供的功能(安全性、项目工作流、发布)。
因此,如果图像的总数较少,并且大型图像(大于 1 MB)的数量也较少,那么应考虑将资源存储在数据库中以方便起见,否则我们应该考虑文件系统方案。
历史
- 2016 年 2 月 15 日:提示的第一个/草稿版本