@@ -177,19 +177,15 @@ public function write(Request $request, Response $response)
177
177
$ key = $ this ->getCacheKey ($ request );
178
178
$ storedEnv = $ this ->persistRequest ($ request );
179
179
180
- // write the response body to the entity store if this is the original response
181
- if (!$ response ->headers ->has ('X-Content-Digest ' )) {
182
- $ digest = $ this ->generateContentDigest ($ response );
180
+ $ digest = $ this ->generateContentDigest ($ response );
181
+ $ response ->headers ->set ('X-Content-Digest ' , $ digest );
183
182
184
- if (!$ this ->save ($ digest , $ response ->getContent ())) {
185
- throw new \RuntimeException ('Unable to store the entity. ' );
186
- }
187
-
188
- $ response ->headers ->set ('X-Content-Digest ' , $ digest );
183
+ if (!$ this ->save ($ digest , $ response ->getContent (), false )) {
184
+ throw new \RuntimeException ('Unable to store the entity. ' );
185
+ }
189
186
190
- if (!$ response ->headers ->has ('Transfer-Encoding ' )) {
191
- $ response ->headers ->set ('Content-Length ' , \strlen ($ response ->getContent ()));
192
- }
187
+ if (!$ response ->headers ->has ('Transfer-Encoding ' )) {
188
+ $ response ->headers ->set ('Content-Length ' , \strlen ($ response ->getContent ()));
193
189
}
194
190
195
191
// read existing cache entries, remove non-varying, and add this one to the list
@@ -362,15 +358,20 @@ private function load($key)
362
358
/**
363
359
* Save data for the given key.
364
360
*
365
- * @param string $key The store key
366
- * @param string $data The data to store
361
+ * @param string $key The store key
362
+ * @param string $data The data to store
363
+ * @param bool $overwrite Whether existing data should be overwritten
367
364
*
368
365
* @return bool
369
366
*/
370
- private function save ($ key , $ data )
367
+ private function save ($ key , $ data, $ overwrite = true )
371
368
{
372
369
$ path = $ this ->getPath ($ key );
373
370
371
+ if (!$ overwrite && file_exists ($ path )) {
372
+ return true ;
373
+ }
374
+
374
375
if (isset ($ this ->locks [$ key ])) {
375
376
$ fp = $ this ->locks [$ key ];
376
377
@ftruncate ($ fp , 0 );
0 commit comments