|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # Media Repository
-
- *Synapse implementation-specific details for the media repository*
-
- The media repository
- * stores avatars, attachments and their thumbnails for media uploaded by local
- users.
- * caches avatars, attachments and their thumbnails for media uploaded by remote
- users.
- * caches resources and thumbnails used for URL previews.
-
- All media in Matrix can be identified by a unique
- [MXC URI](https://spec.matrix.org/latest/client-server-api/#matrix-content-mxc-uris),
- consisting of a server name and media ID:
- ```
- mxc://<server-name>/<media-id>
- ```
-
- ## Local Media
- Synapse generates 24 character media IDs for content uploaded by local users.
- These media IDs consist of upper and lowercase letters and are case-sensitive.
- Other homeserver implementations may generate media IDs differently.
-
- Local media is recorded in the `local_media_repository` table, which includes
- metadata such as MIME types, upload times and file sizes.
- Note that this table is shared by the URL cache, which has a different media ID
- scheme.
-
- ### Paths
- A file with media ID `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg`
- thumbnail, created by scaling, would be stored at:
- ```
- local_content/aa/bb/cccccccccccccccccccc
- local_thumbnails/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale
- ```
-
- ## Remote Media
- When media from a remote homeserver is requested from Synapse, it is assigned
- a local `filesystem_id`, with the same format as locally-generated media IDs,
- as described above.
-
- A record of remote media is stored in the `remote_media_cache` table, which
- can be used to map remote MXC URIs (server names and media IDs) to local
- `filesystem_id`s.
-
- ### Paths
- A file from `matrix.org` with `filesystem_id` `aabbcccccccccccccccccccc` and its
- `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at:
- ```
- remote_content/matrix.org/aa/bb/cccccccccccccccccccc
- remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale
- ```
- Older thumbnails may omit the thumbnailing method:
- ```
- remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg
- ```
-
- Note that `remote_thumbnail/` does not have an `s`.
-
- ## URL Previews
-
- When generating previews for URLs, Synapse may download and cache various
- resources, including images. These resources are assigned temporary media IDs
- of the form `yyyy-mm-dd_aaaaaaaaaaaaaaaa`, where `yyyy-mm-dd` is the current
- date and `aaaaaaaaaaaaaaaa` is a random sequence of 16 case-sensitive letters.
-
- The metadata for these cached resources is stored in the
- `local_media_repository` and `local_media_repository_url_cache` tables.
-
- Resources for URL previews are deleted after a few days.
-
- ### Paths
- The file with media ID `yyyy-mm-dd_aaaaaaaaaaaaaaaa` and its `128x96`
- `image/jpeg` thumbnail, created by scaling, would be stored at:
- ```
- url_cache/yyyy-mm-dd/aaaaaaaaaaaaaaaa
- url_cache_thumbnails/yyyy-mm-dd/aaaaaaaaaaaaaaaa/128-96-image-jpeg-scale
- ```
|