@@ -175,19 +175,15 @@ public function write(Request $request, Response $response)
175
175
$ key = $ this ->getCacheKey ($ request );
176
176
$ storedEnv = $ this ->persistRequest ($ request );
177
177
178
- // write the response body to the entity store if this is the original response
179
- if (!$ response ->headers ->has ('X-Content-Digest ' )) {
180
- $ digest = $ this ->generateContentDigest ($ response );
178
+ $ digest = $ this ->generateContentDigest ($ response );
179
+ $ response ->headers ->set ('X-Content-Digest ' , $ digest );
181
180
182
- if (!$ this ->save ($ digest , $ response ->getContent ())) {
183
- throw new \RuntimeException ('Unable to store the entity. ' );
184
- }
185
-
186
- $ response ->headers ->set ('X-Content-Digest ' , $ digest );
181
+ if (!$ this ->save ($ digest , $ response ->getContent (), false )) {
182
+ throw new \RuntimeException ('Unable to store the entity. ' );
183
+ }
187
184
188
- if (!$ response ->headers ->has ('Transfer-Encoding ' )) {
189
- $ response ->headers ->set ('Content-Length ' , \strlen ($ response ->getContent ()));
190
- }
185
+ if (!$ response ->headers ->has ('Transfer-Encoding ' )) {
186
+ $ response ->headers ->set ('Content-Length ' , \strlen ($ response ->getContent ()));
191
187
}
192
188
193
189
// read existing cache entries, remove non-varying, and add this one to the list
@@ -344,10 +340,14 @@ private function load(string $key): ?string
344
340
/**
345
341
* Save data for the given key.
346
342
*/
347
- private function save (string $ key , string $ data ): bool
343
+ private function save (string $ key , string $ data, bool $ overwrite = true ): bool
348
344
{
349
345
$ path = $ this ->getPath ($ key );
350
346
347
+ if (!$ overwrite && file_exists ($ path )) {
348
+ return true ;
349
+ }
350
+
351
351
if (isset ($ this ->locks [$ key ])) {
352
352
$ fp = $ this ->locks [$ key ];
353
353
@ftruncate ($ fp , 0 );
0 commit comments