improve cache busting for module/theme static assets (ie. do not require a restart)
This commit is contained in:
@@ -46,6 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<br />
|
||||||
<Section Name="Information" ResourceKey="Information">
|
<Section Name="Information" ResourceKey="Information">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-1 align-items-center">
|
<div class="row mb-1 align-items-center">
|
||||||
@@ -97,6 +98,12 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-1 align-items-center">
|
||||||
|
<Label Class="col-sm-3" For="fingerprint" HelpText="A unique identifier for the module's static resources. This value can be changed by clicking the Save option below (ie. cache busting)." ResourceKey="Fingerprint">Fingerprint: </Label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input id="fingerprint" class="form-control" @bind="@_fingerprint" disabled />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Section>
|
</Section>
|
||||||
<br />
|
<br />
|
||||||
@@ -231,6 +238,7 @@
|
|||||||
private string _url = "";
|
private string _url = "";
|
||||||
private string _contact = "";
|
private string _contact = "";
|
||||||
private string _license = "";
|
private string _license = "";
|
||||||
|
private string _fingerprint = "";
|
||||||
private List<Permission> _permissions = null;
|
private List<Permission> _permissions = null;
|
||||||
private string _createdby;
|
private string _createdby;
|
||||||
private DateTime _createdon;
|
private DateTime _createdon;
|
||||||
@@ -266,6 +274,7 @@
|
|||||||
_url = moduleDefinition.Url;
|
_url = moduleDefinition.Url;
|
||||||
_contact = moduleDefinition.Contact;
|
_contact = moduleDefinition.Contact;
|
||||||
_license = moduleDefinition.License;
|
_license = moduleDefinition.License;
|
||||||
|
_fingerprint = moduleDefinition.Fingerprint;
|
||||||
_permissions = moduleDefinition.PermissionList;
|
_permissions = moduleDefinition.PermissionList;
|
||||||
_createdby = moduleDefinition.CreatedBy;
|
_createdby = moduleDefinition.CreatedBy;
|
||||||
_createdon = moduleDefinition.CreatedOn;
|
_createdon = moduleDefinition.CreatedOn;
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<br />
|
||||||
<Section Name="Information" ResourceKey="Information" Heading="Information">
|
<Section Name="Information" ResourceKey="Information" Heading="Information">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-1 align-items-center">
|
<div class="row mb-1 align-items-center">
|
||||||
@@ -81,6 +82,12 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-1 align-items-center">
|
||||||
|
<Label Class="col-sm-3" For="fingerprint" HelpText="A unique identifier for the theme's static resources. This value can be changed by clicking the Save option below (ie. cache busting)." ResourceKey="Fingerprint">Fingerprint: </Label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input id="fingerprint" class="form-control" @bind="@_fingerprint" disabled />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Section>
|
</Section>
|
||||||
<br />
|
<br />
|
||||||
@@ -117,6 +124,7 @@
|
|||||||
private string _url = "";
|
private string _url = "";
|
||||||
private string _contact = "";
|
private string _contact = "";
|
||||||
private string _license = "";
|
private string _license = "";
|
||||||
|
private string _fingerprint = "";
|
||||||
private List<Permission> _permissions = null;
|
private List<Permission> _permissions = null;
|
||||||
private string _createdby;
|
private string _createdby;
|
||||||
private DateTime _createdon;
|
private DateTime _createdon;
|
||||||
@@ -143,6 +151,7 @@
|
|||||||
_url = theme.Url;
|
_url = theme.Url;
|
||||||
_contact = theme.Contact;
|
_contact = theme.Contact;
|
||||||
_license = theme.License;
|
_license = theme.License;
|
||||||
|
_fingerprint = theme.Fingerprint;
|
||||||
_permissions = theme.PermissionList;
|
_permissions = theme.PermissionList;
|
||||||
_createdby = theme.CreatedBy;
|
_createdby = theme.CreatedBy;
|
||||||
_createdon = theme.CreatedOn;
|
_createdon = theme.CreatedOn;
|
||||||
|
|||||||
@@ -234,4 +234,10 @@
|
|||||||
<data name="Pages.Heading" xml:space="preserve">
|
<data name="Pages.Heading" xml:space="preserve">
|
||||||
<value>Pages</value>
|
<value>Pages</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Fingerprint.Text" xml:space="preserve">
|
||||||
|
<value>Fingerprint:</value>
|
||||||
|
</data>
|
||||||
|
<data name="Fingerprint.HelpText" xml:space="preserve">
|
||||||
|
<value>A unique identifier for the module's static resources. This value can be changed by clicking the Save option below (ie. cache busting).</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -186,4 +186,10 @@
|
|||||||
<data name="Permissions.Heading" xml:space="preserve">
|
<data name="Permissions.Heading" xml:space="preserve">
|
||||||
<value>Permissions</value>
|
<value>Permissions</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Fingerprint.Text" xml:space="preserve">
|
||||||
|
<value>Fingerprint:</value>
|
||||||
|
</data>
|
||||||
|
<data name="Fingerprint.HelpText" xml:space="preserve">
|
||||||
|
<value>A unique identifier for the theme's static resources. This value can be changed by clicking the Save option below (ie. cache busting).</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -164,6 +164,7 @@ namespace Oqtane.Controllers
|
|||||||
{
|
{
|
||||||
_moduleDefinitions.UpdateModuleDefinition(moduleDefinition);
|
_moduleDefinitions.UpdateModuleDefinition(moduleDefinition);
|
||||||
_syncManager.AddSyncEvent(_alias, EntityNames.ModuleDefinition, moduleDefinition.ModuleDefinitionId, SyncEventActions.Update);
|
_syncManager.AddSyncEvent(_alias, EntityNames.ModuleDefinition, moduleDefinition.ModuleDefinitionId, SyncEventActions.Update);
|
||||||
|
_syncManager.AddSyncEvent(_alias, EntityNames.Site, _alias.SiteId, SyncEventActions.Refresh); // fingerprint changed
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Module Definition Updated {ModuleDefinition}", moduleDefinition);
|
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Module Definition Updated {ModuleDefinition}", moduleDefinition);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ namespace Oqtane.Controllers
|
|||||||
{
|
{
|
||||||
_themes.UpdateTheme(theme);
|
_themes.UpdateTheme(theme);
|
||||||
_syncManager.AddSyncEvent(_alias, EntityNames.Theme, theme.ThemeId, SyncEventActions.Update);
|
_syncManager.AddSyncEvent(_alias, EntityNames.Theme, theme.ThemeId, SyncEventActions.Update);
|
||||||
|
_syncManager.AddSyncEvent(_alias, EntityNames.Site, _alias.SiteId, SyncEventActions.Refresh); // fingerprint changed
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Theme Updated {Theme}", theme);
|
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Theme Updated {Theme}", theme);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ namespace Oqtane.Repository
|
|||||||
ModuleDefinition.Resources = moduleDefinition.Resources;
|
ModuleDefinition.Resources = moduleDefinition.Resources;
|
||||||
ModuleDefinition.IsEnabled = moduleDefinition.IsEnabled;
|
ModuleDefinition.IsEnabled = moduleDefinition.IsEnabled;
|
||||||
ModuleDefinition.PackageName = moduleDefinition.PackageName;
|
ModuleDefinition.PackageName = moduleDefinition.PackageName;
|
||||||
ModuleDefinition.Fingerprint = Utilities.GenerateSimpleHash(moduleDefinition.ModifiedOn.ToString("yyyyMMddHHmm"));
|
ModuleDefinition.Fingerprint = moduleDefinition.Fingerprint;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ModuleDefinition;
|
return ModuleDefinition;
|
||||||
@@ -186,6 +186,7 @@ namespace Oqtane.Repository
|
|||||||
ModuleDefinition.CreatedOn = moduledefinition.CreatedOn;
|
ModuleDefinition.CreatedOn = moduledefinition.CreatedOn;
|
||||||
ModuleDefinition.ModifiedBy = moduledefinition.ModifiedBy;
|
ModuleDefinition.ModifiedBy = moduledefinition.ModifiedBy;
|
||||||
ModuleDefinition.ModifiedOn = moduledefinition.ModifiedOn;
|
ModuleDefinition.ModifiedOn = moduledefinition.ModifiedOn;
|
||||||
|
ModuleDefinition.Fingerprint = Utilities.GenerateSimpleHash(moduledefinition.ModifiedOn.ToString("yyyyMMddHHmm"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// any remaining module definitions are orphans
|
// any remaining module definitions are orphans
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace Oqtane.Repository
|
|||||||
Theme.ContainerSettingsType = theme.ContainerSettingsType;
|
Theme.ContainerSettingsType = theme.ContainerSettingsType;
|
||||||
Theme.PackageName = theme.PackageName;
|
Theme.PackageName = theme.PackageName;
|
||||||
Theme.PermissionList = theme.PermissionList;
|
Theme.PermissionList = theme.PermissionList;
|
||||||
Theme.Fingerprint = Utilities.GenerateSimpleHash(theme.ModifiedOn.ToString("yyyyMMddHHmm"));
|
Theme.Fingerprint = theme.Fingerprint;
|
||||||
Themes.Add(Theme);
|
Themes.Add(Theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,6 +165,7 @@ namespace Oqtane.Repository
|
|||||||
Theme.CreatedOn = theme.CreatedOn;
|
Theme.CreatedOn = theme.CreatedOn;
|
||||||
Theme.ModifiedBy = theme.ModifiedBy;
|
Theme.ModifiedBy = theme.ModifiedBy;
|
||||||
Theme.ModifiedOn = theme.ModifiedOn;
|
Theme.ModifiedOn = theme.ModifiedOn;
|
||||||
|
Theme.Fingerprint = Utilities.GenerateSimpleHash(theme.ModifiedOn.ToString("yyyyMMddHHmm"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// any remaining themes are orphans
|
// any remaining themes are orphans
|
||||||
|
|||||||
Reference in New Issue
Block a user