mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
[Fixes #5811] Adding a VaryByRequestCookies property to the CacheSettingsPart
Fixes #5811
This commit is contained in:
committed by
Sébastien Ros
parent
59a9f0bf03
commit
429889b36e
@@ -89,6 +89,7 @@ namespace Orchard.OutputCache.Controllers {
|
|||||||
DefaultMaxAge = settings.DefaultMaxAge,
|
DefaultMaxAge = settings.DefaultMaxAge,
|
||||||
VaryByQueryStringParameters = settings.VaryByQueryStringParameters,
|
VaryByQueryStringParameters = settings.VaryByQueryStringParameters,
|
||||||
VaryByRequestHeaders = settings.VaryByRequestHeaders,
|
VaryByRequestHeaders = settings.VaryByRequestHeaders,
|
||||||
|
VaryByRequestCookies = settings.VaryByRequestCookies,
|
||||||
IgnoredUrls = settings.IgnoredUrls,
|
IgnoredUrls = settings.IgnoredUrls,
|
||||||
IgnoreNoCache = settings.IgnoreNoCache,
|
IgnoreNoCache = settings.IgnoreNoCache,
|
||||||
VaryByCulture = settings.VaryByCulture,
|
VaryByCulture = settings.VaryByCulture,
|
||||||
@@ -116,6 +117,7 @@ namespace Orchard.OutputCache.Controllers {
|
|||||||
settings.DefaultMaxAge = model.DefaultMaxAge;
|
settings.DefaultMaxAge = model.DefaultMaxAge;
|
||||||
settings.VaryByQueryStringParameters = model.VaryByQueryStringParameters;
|
settings.VaryByQueryStringParameters = model.VaryByQueryStringParameters;
|
||||||
settings.VaryByRequestHeaders = model.VaryByRequestHeaders;
|
settings.VaryByRequestHeaders = model.VaryByRequestHeaders;
|
||||||
|
settings.VaryByRequestCookies = model.VaryByRequestCookies;
|
||||||
settings.IgnoredUrls = model.IgnoredUrls;
|
settings.IgnoredUrls = model.IgnoredUrls;
|
||||||
settings.IgnoreNoCache = model.IgnoreNoCache;
|
settings.IgnoreNoCache = model.IgnoreNoCache;
|
||||||
settings.VaryByCulture = model.VaryByCulture;
|
settings.VaryByCulture = model.VaryByCulture;
|
||||||
|
|||||||
@@ -397,6 +397,12 @@ namespace Orchard.OutputCache.Filters {
|
|||||||
result["HEADER:" + varyByRequestHeader] = requestHeaders[varyByRequestHeader];
|
result["HEADER:" + varyByRequestHeader] = requestHeaders[varyByRequestHeader];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vary by configured cookies.
|
||||||
|
var requestCookies = filterContext.RequestContext.HttpContext.Request.Cookies;
|
||||||
|
foreach (var varyByRequestCookies in CacheSettings.VaryByRequestCookies) {
|
||||||
|
if (requestCookies[varyByRequestCookies] != null)
|
||||||
|
result["COOKIE:" + varyByRequestCookies] = requestCookies[varyByRequestCookies].Value;
|
||||||
|
}
|
||||||
|
|
||||||
// Vary by request culture if configured.
|
// Vary by request culture if configured.
|
||||||
if (CacheSettings.VaryByCulture) {
|
if (CacheSettings.VaryByCulture) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ namespace Orchard.OutputCache.Models {
|
|||||||
VaryByQueryStringParameters = String.IsNullOrWhiteSpace(part.VaryByQueryStringParameters) ? null : part.VaryByQueryStringParameters.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
VaryByQueryStringParameters = String.IsNullOrWhiteSpace(part.VaryByQueryStringParameters) ? null : part.VaryByQueryStringParameters.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
||||||
VaryByRequestHeaders = String.IsNullOrWhiteSpace(part.VaryByRequestHeaders) ? new HashSet<string>() : new HashSet<string>(part.VaryByRequestHeaders.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray());
|
VaryByRequestHeaders = String.IsNullOrWhiteSpace(part.VaryByRequestHeaders) ? new HashSet<string>() : new HashSet<string>(part.VaryByRequestHeaders.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray());
|
||||||
VaryByRequestHeaders.Add("HOST"); // Always vary by host name/tenant.
|
VaryByRequestHeaders.Add("HOST"); // Always vary by host name/tenant.
|
||||||
|
VaryByRequestCookies = String.IsNullOrWhiteSpace(part.VaryByRequestCookies) ? new HashSet<string>() : new HashSet<string>(part.VaryByRequestCookies.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray());
|
||||||
IgnoredUrls = String.IsNullOrWhiteSpace(part.IgnoredUrls) ? null : part.IgnoredUrls.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
IgnoredUrls = String.IsNullOrWhiteSpace(part.IgnoredUrls) ? null : part.IgnoredUrls.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
||||||
IgnoreNoCache = part.IgnoreNoCache;
|
IgnoreNoCache = part.IgnoreNoCache;
|
||||||
VaryByCulture = part.VaryByCulture;
|
VaryByCulture = part.VaryByCulture;
|
||||||
@@ -27,6 +28,7 @@ namespace Orchard.OutputCache.Models {
|
|||||||
public int DefaultMaxAge { get; private set; }
|
public int DefaultMaxAge { get; private set; }
|
||||||
public IEnumerable<string> VaryByQueryStringParameters { get; private set; }
|
public IEnumerable<string> VaryByQueryStringParameters { get; private set; }
|
||||||
public ISet<string> VaryByRequestHeaders { get; private set; }
|
public ISet<string> VaryByRequestHeaders { get; private set; }
|
||||||
|
public ISet<string> VaryByRequestCookies { get; private set; }
|
||||||
public IEnumerable<string> IgnoredUrls { get; private set; }
|
public IEnumerable<string> IgnoredUrls { get; private set; }
|
||||||
public bool IgnoreNoCache { get; private set; }
|
public bool IgnoreNoCache { get; private set; }
|
||||||
public bool VaryByCulture { get; private set; }
|
public bool VaryByCulture { get; private set; }
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ namespace Orchard.OutputCache.Models {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string VaryByRequestCookies {
|
||||||
|
get { return this.Retrieve(x => x.VaryByRequestCookies); }
|
||||||
|
set { this.Store(x => x.VaryByRequestCookies, value); }
|
||||||
|
}
|
||||||
|
|
||||||
public string IgnoredUrls {
|
public string IgnoredUrls {
|
||||||
get { return this.Retrieve(x => x.IgnoredUrls); }
|
get { return this.Retrieve(x => x.IgnoredUrls); }
|
||||||
set { this.Store(x => x.IgnoredUrls, value); }
|
set { this.Store(x => x.IgnoredUrls, value); }
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Orchard.OutputCache.ViewModels {
|
|||||||
[Range(0, Int32.MaxValue), Required] public int DefaultMaxAge { get; set; }
|
[Range(0, Int32.MaxValue), Required] public int DefaultMaxAge { get; set; }
|
||||||
public string VaryByQueryStringParameters { get; set; }
|
public string VaryByQueryStringParameters { get; set; }
|
||||||
public string VaryByRequestHeaders { get; set; }
|
public string VaryByRequestHeaders { get; set; }
|
||||||
|
public string VaryByRequestCookies { get; set; }
|
||||||
public string IgnoredUrls { get; set; }
|
public string IgnoredUrls { get; set; }
|
||||||
public bool IgnoreNoCache { get; set; }
|
public bool IgnoreNoCache { get; set; }
|
||||||
public bool VaryByCulture { get; set; }
|
public bool VaryByCulture { get; set; }
|
||||||
|
|||||||
@@ -44,6 +44,12 @@
|
|||||||
<span class="hint">@T("When defined, using comma separated values, sets caching to vary by the specified request headers.")</span>
|
<span class="hint">@T("When defined, using comma separated values, sets caching to vary by the specified request headers.")</span>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<label>@T("Vary Cookie String Parameters")</label>
|
||||||
|
@Html.TextBoxFor(m => m.VaryByRequestCookies, new { @class = "text medium" })
|
||||||
|
<span class="hint">@T("When defined, using comma separated values, sets caching to vary via specified cookie string parameters")</span>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label>@T("Ignored URLs")</label>
|
<label>@T("Ignored URLs")</label>
|
||||||
@Html.TextAreaFor(m => m.IgnoredUrls, new { @class = "text medium" })
|
@Html.TextAreaFor(m => m.IgnoredUrls, new { @class = "text medium" })
|
||||||
|
|||||||
Reference in New Issue
Block a user