@@ -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
@@ -346,10 +342,14 @@ private function load(string $key): ?string
346
342
/**
347
343
* Save data for the given key.
348
344
*/
349
- private function save (string $ key , string $ data ): bool
345
+ private function save (string $ key , string $ data, bool $ overwrite = true ): bool
350
346
{
351
347
$ path = $ this ->getPath ($ key );
352
348
349
+ if (!$ overwrite && file_exists ($ path )) {
350
+ return true ;
351
+ }
352
+
353
353
if (isset ($ this ->locks [$ key ])) {
354
354
$ fp = $ this ->locks [$ key ];
355
355
@ftruncate ($ fp , 0 );
0 commit comments