diff --git a/ctx.go b/ctx.go index 2a4341b268..607a678ff8 100644 --- a/ctx.go +++ b/ctx.go @@ -624,7 +624,7 @@ func (c *DefaultCtx) Fresh() bool { if err != nil { return false } - return lastModifiedTime.Before(modifiedSinceTime) + return lastModifiedTime.Compare(modifiedSinceTime) != 1 } } } diff --git a/ctx_test.go b/ctx_test.go index 2060e2a942..a94e4cb42b 100644 --- a/ctx_test.go +++ b/ctx_test.go @@ -1397,6 +1397,10 @@ func Test_Ctx_Fresh(t *testing.T) { require.False(t, c.Fresh()) c.Request().Header.Set(HeaderIfModifiedSince, "Wed, 21 Oct 2015 07:28:00 GMT") + require.True(t, c.Fresh()) + + c.Request().Header.Set(HeaderIfModifiedSince, "Wed, 21 Oct 2015 07:27:59 GMT") + c.Response().Header.Set(HeaderLastModified, "Wed, 21 Oct 2015 07:28:00 GMT") require.False(t, c.Fresh()) } @@ -1412,6 +1416,18 @@ func Benchmark_Ctx_Fresh_WithNoCache(b *testing.B) { } } +// go test -v -run=^$ -bench=Benchmark_Ctx_Fresh_LastModified -benchmem -count=4 +func Benchmark_Ctx_Fresh_LastModified(b *testing.B) { + app := New() + c := app.AcquireCtx(&fasthttp.RequestCtx{}) + + c.Response().Header.Set(HeaderLastModified, "Wed, 21 Oct 2015 07:28:00 GMT") + c.Request().Header.Set(HeaderIfModifiedSince, "Wed, 21 Oct 2015 07:28:00 GMT") + for n := 0; n < b.N; n++ { + c.Fresh() + } +} + // go test -run Test_Ctx_Binders -v func Test_Ctx_Binders(t *testing.T) { t.Parallel()