You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+20-4Lines changed: 20 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,8 +12,8 @@
12
12
## Features
13
13
14
14
-**Plug-and-Play**: Just swap in as your HTTP client's transport; no extra configuration needed. [^1]
15
-
-**RFC 9111 Compliance**: Handles validation, expiration, and revalidation ([see details](#rfc-9111-compliance-matrix)).
16
-
-**Cache Control**: Supports all required HTTP cache control directives, as well as extensions like `stale-while-revalidate`, `stale-if-error`, and `immutable` ([view details](#field-definitions-details)).
15
+
-**RFC 9111 Compliance**: Handles validation, expiration, and revalidation (see [details](#rfc-9111-compliance-matrix)).
16
+
-**Cache Control**: Supports all required HTTP cache control directives, as well as extensions like `stale-while-revalidate`, `stale-if-error`, and `immutable` (see [details](#field-definitions-details)).
17
17
-**Cache Backends**: Built-in support for file system and memory caches, with the ability to implement custom backends (see [Cache Backends](#cache-backends)).
18
18
-**Cache Maintenance API**: Optional REST endpoints for listing, retrieving, and deleting cache entries (see [Cache Maintenance API](#cache-maintenance-api-debug-only)).
19
19
-**Extensible**: Options for logging, transport and timeouts (see [Options](#options)).
| 5.2.2.7. |`private`| N/A | N/A | Intended for shared caches; not applicable to private caches |
288
288
| 5.2.2.8. |`proxy-revalidate`| N/A | N/A | Intended for shared caches; not applicable to private caches |
289
289
| 5.2.2.9. |`public`| Optional | ✔️ ||
@@ -310,6 +310,22 @@ The following additional cache control directives are supported, as defined in v
310
310
</details>
311
311
</details>
312
312
313
+
### Content Transformation Compliance
314
+
315
+
This implementation maintains RFC 9111 compliance regarding the `no-transform` directive by enforcing a **storage-only** architecture:
316
+
317
+
```go
318
+
typeConninterface {
319
+
Get(key string) ([]byte, error) // Returns byte-identical data
320
+
Set(key string, data []byte) error// Stores byte-identical data
321
+
Delete(key string) error// Simple deletion
322
+
}
323
+
```
324
+
325
+
**Storage optimizations** (compression, encryption, serialization) are allowed because they return **byte-identical** HTTP responses. This differs from transformations mentioned in [RFC 9110 §7.7](https://www.rfc-editor.org/rfc/rfc9110#section-7.7), like image format conversion which change actual response content.
326
+
327
+
**Custom backends:** Must return byte-identical responses. Use the [`store/acceptance`](https://pkg.go.dev/github.com/bartventer/httpcache/store/acceptance) test suite to verify compliance.
328
+
313
329
## License
314
330
315
331
This project is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). See the [LICENSE](LICENSE) file for details.
0 commit comments