Browse Source

Fix caching headers.

pull/782/head
Sebastian 4 years ago
parent
commit
8d9b21482b
  1. 8
      backend/src/Squidex.Web/Pipeline/CachingManager.cs
  2. 15
      backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs

8
backend/src/Squidex.Web/Pipeline/CachingManager.cs

@ -115,16 +115,18 @@ namespace Squidex.Web.Pipeline
{ {
foreach (var key in keys) foreach (var key in keys)
{ {
var encoded = Uri.EscapeDataString(key);
if (stringBuilder.Length == 0) if (stringBuilder.Length == 0)
{ {
if (stringBuilder.Length + key.Length > maxKeysSize) if (stringBuilder.Length + encoded.Length > maxKeysSize)
{ {
break; break;
} }
} }
else else
{ {
if (stringBuilder.Length + key.Length + 1 > maxKeysSize) if (stringBuilder.Length + encoded.Length + 1 > maxKeysSize)
{ {
break; break;
} }
@ -132,7 +134,7 @@ namespace Squidex.Web.Pipeline
stringBuilder.Append(' '); stringBuilder.Append(' ');
} }
stringBuilder.Append(key); stringBuilder.Append(encoded);
} }
if (stringBuilder.Length > 0) if (stringBuilder.Length > 0)

15
backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs

@ -214,6 +214,21 @@ namespace Squidex.Web.Pipeline
Assert.Equal(string.Empty, httpContext.Response.Headers[HeaderNames.ETag]); Assert.Equal(string.Empty, httpContext.Response.Headers[HeaderNames.ETag]);
} }
[Fact]
public async Task Should_append_surrogate_and_ecape_if_necessary()
{
var id = DomainId.Create("id@domain");
cachingOptions.MaxSurrogateKeysSize = 100;
await MakeRequestAsync(() =>
{
cachingManager.AddDependency(id, 12);
});
Assert.Equal("id%40domain", httpContext.Response.Headers["Surrogate-Key"]);
}
[Fact] [Fact]
public async Task Should_append_surrogate_keys() public async Task Should_append_surrogate_keys()
{ {

Loading…
Cancel
Save