Browse Source

Further document ShallowEtagHeaderFilter limitations

This commit improves the documentation for the
`ShallowEtagHeaderFilter`, stating that it is only meant to support a
subset of conditional HTTP requests: GET requests with "If-None-Match"
headers. Other headers and state changing HTTP methods are not supported
here, as the filter only operates on the content of the response and has
no knowledge of the resource being served.

Closes gh-30517
pull/30915/head
Brian Clozel 3 years ago
parent
commit
430a24e6bc
  1. 7
      framework-docs/modules/ROOT/pages/web/webmvc/filters.adoc
  2. 4
      spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java

7
framework-docs/modules/ROOT/pages/web/webmvc/filters.adoc

@ -69,9 +69,10 @@ written to the response and computing an MD5 hash from it. The next time a clien @@ -69,9 +69,10 @@ written to the response and computing an MD5 hash from it. The next time a clien
it does the same, but it also compares the computed value against the `If-None-Match`
request header and, if the two are equal, returns a 304 (NOT_MODIFIED).
This strategy saves network bandwidth but not CPU, as the full response must be computed
for each request. Other strategies at the controller level, described earlier, can avoid
the computation. See xref:web/webmvc/mvc-caching.adoc[HTTP Caching].
This strategy saves network bandwidth but not CPU, as the full response must be computed for each request.
State-changing HTTP methods and other HTTP conditional request headers such as `If-Match` and `If-Unmodified-Since` are outside the scope of this filter.
Other strategies at the controller level can avoid the computation and have a broader support for HTTP conditional requests.
See xref:web/webmvc/mvc-caching.adoc[HTTP Caching].
This filter has a `writeWeakETag` parameter that configures the filter to write weak ETags
similar to the following: `W/"02a2d595e6ed9a0b24f027f2b63b134d6"` (as defined in

4
spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java

@ -46,6 +46,10 @@ import org.springframework.web.util.WebUtils; @@ -46,6 +46,10 @@ import org.springframework.web.util.WebUtils;
* (e.g. a {@link org.springframework.web.servlet.View}) is still rendered.
* As such, this filter only saves bandwidth, not server performance.
*
* <p>State-changing HTTP methods and other HTTP conditional request headers such as
* {@code If-Match} and {@code If-Unmodified-Since} are outside the scope of this filter.
* Please consider using {@link ServletWebRequest#checkNotModified(String, long)} instead.
*
* @author Arjen Poutsma
* @author Rossen Stoyanchev
* @author Brian Clozel

Loading…
Cancel
Save