mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-20 09:04:42 +01:00
update caching headers
This commit is contained in:
@@ -88,11 +88,14 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
var queries = new List<string>
|
||||
{
|
||||
"PRAGMA temp_store = memory",
|
||||
//"PRAGMA journal_mode=WAL"
|
||||
//"PRAGMA cache size=-10000"
|
||||
};
|
||||
|
||||
if (EnableTempStoreMemory)
|
||||
{
|
||||
queries.Add("PRAGMA temp_store = memory");
|
||||
}
|
||||
|
||||
//var cacheSize = CacheSize;
|
||||
//if (cacheSize.HasValue)
|
||||
//{
|
||||
@@ -116,7 +119,7 @@ namespace Emby.Server.Implementations.Data
|
||||
db.ExecuteAll(string.Join(";", queries.ToArray()));
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (queries.Count > 0)
|
||||
{
|
||||
db.ExecuteAll(string.Join(";", queries.ToArray()));
|
||||
}
|
||||
@@ -124,6 +127,14 @@ namespace Emby.Server.Implementations.Data
|
||||
return db;
|
||||
}
|
||||
|
||||
protected virtual bool EnableTempStoreMemory
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual int? CacheSize
|
||||
{
|
||||
get
|
||||
|
||||
@@ -63,8 +63,8 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
string[] queries = {
|
||||
|
||||
"create table if not exists userdisplaypreferences (id GUID, userId GUID, client text, data BLOB)",
|
||||
"create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)"
|
||||
"create table if not exists userdisplaypreferences (id GUID, userId GUID, client text, data BLOB)",
|
||||
"create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)"
|
||||
};
|
||||
|
||||
connection.RunQueries(queries);
|
||||
@@ -107,10 +107,10 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
private void SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client, IDatabaseConnection connection)
|
||||
{
|
||||
using (var statement = connection.PrepareStatement("replace into userdisplaypreferences (id, userid, client, data) values (@id, @userid, @client, @data)"))
|
||||
{
|
||||
var serialized = _jsonSerializer.SerializeToBytes(displayPreferences, _memoryStreamProvider);
|
||||
var serialized = _jsonSerializer.SerializeToBytes(displayPreferences, _memoryStreamProvider);
|
||||
|
||||
using (var statement = connection.PrepareStatement("replace into userdisplaypreferences (id, userid, client, data) values (@id, @userId, @client, @data)"))
|
||||
{
|
||||
statement.TryBind("@id", displayPreferences.Id.ToGuidParamValue());
|
||||
statement.TryBind("@userId", userId.ToGuidParamValue());
|
||||
statement.TryBind("@client", client);
|
||||
|
||||
@@ -30,6 +30,7 @@ using MediaBrowser.Server.Implementations.Playlists;
|
||||
using MediaBrowser.Model.Reflection;
|
||||
using SQLitePCL.pretty;
|
||||
using MediaBrowser.Model.System;
|
||||
using MediaBrowser.Model.Threading;
|
||||
|
||||
namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
@@ -68,11 +69,13 @@ namespace Emby.Server.Implementations.Data
|
||||
private readonly IMemoryStreamFactory _memoryStreamProvider;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly IEnvironmentInfo _environmentInfo;
|
||||
private readonly ITimerFactory _timerFactory;
|
||||
private ITimer _shrinkMemoryTimer;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
||||
/// </summary>
|
||||
public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogger logger, IMemoryStreamFactory memoryStreamProvider, IAssemblyInfo assemblyInfo, IFileSystem fileSystem, IEnvironmentInfo environmentInfo)
|
||||
public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogger logger, IMemoryStreamFactory memoryStreamProvider, IAssemblyInfo assemblyInfo, IFileSystem fileSystem, IEnvironmentInfo environmentInfo, ITimerFactory timerFactory)
|
||||
: base(logger)
|
||||
{
|
||||
if (config == null)
|
||||
@@ -89,6 +92,7 @@ namespace Emby.Server.Implementations.Data
|
||||
_memoryStreamProvider = memoryStreamProvider;
|
||||
_fileSystem = fileSystem;
|
||||
_environmentInfo = environmentInfo;
|
||||
_timerFactory = timerFactory;
|
||||
_typeMapper = new TypeMapper(assemblyInfo);
|
||||
|
||||
_criticReviewsPath = Path.Combine(_config.ApplicationPaths.DataPath, "critic-reviews");
|
||||
@@ -119,6 +123,14 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool EnableTempStoreMemory
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private SQLiteDatabaseConnection _backgroundConnection;
|
||||
protected override void CloseConnection()
|
||||
{
|
||||
@@ -129,6 +141,12 @@ namespace Emby.Server.Implementations.Data
|
||||
_backgroundConnection.Dispose();
|
||||
_backgroundConnection = null;
|
||||
}
|
||||
|
||||
if (_shrinkMemoryTimer != null)
|
||||
{
|
||||
_shrinkMemoryTimer.Dispose();
|
||||
_shrinkMemoryTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -364,13 +382,35 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
connection.RunQueries(postQueries);
|
||||
|
||||
//SqliteExtensions.Attach(_connection, Path.Combine(_config.ApplicationPaths.DataPath, "userdata_v2.db"), "UserDataDb");
|
||||
//await Vacuum(_connection).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
userDataRepo.Initialize(WriteLock);
|
||||
|
||||
_backgroundConnection = CreateConnection(true);
|
||||
|
||||
_shrinkMemoryTimer = _timerFactory.Create(OnShrinkMemoryTimerCallback, null, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(30));
|
||||
}
|
||||
|
||||
private void OnShrinkMemoryTimerCallback(object state)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (WriteLock.Write())
|
||||
{
|
||||
using (var connection = CreateConnection())
|
||||
{
|
||||
connection.RunQueries(new string[]
|
||||
{
|
||||
"pragma shrink_memory"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.ErrorException("Error running shrink memory", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly string[] _retriveItemColumns =
|
||||
@@ -666,7 +706,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
var requiresReset = false;
|
||||
|
||||
var statements = db.PrepareAll(string.Join(";", new string[]
|
||||
var statements = db.PrepareAll(string.Join(";", new string[]
|
||||
{
|
||||
GetSaveItemCommandText(),
|
||||
"delete from AncestorIds where ItemId=@ItemId",
|
||||
|
||||
@@ -84,6 +84,14 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool EnableTempStoreMemory
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportUserDataIfNeeded(IDatabaseConnection connection)
|
||||
{
|
||||
if (!_fileSystem.FileExists(_importFile))
|
||||
|
||||
Reference in New Issue
Block a user