Итак, я пытаюсь установить заголовок контроля кэша в моем ответе внутри моего ресурса, но, похоже, он не работает. Я всегда получаю «no-cache» в заголовке контроля кэша в моем ответе.
Я следовал этому руководству по курсу и сделал следующее:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class RouteResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'from' => $this->from,
'to' => $this->to,
'distance' => empty($this->distance) ? "" : $this->distance,
'duration' => empty($this->duration) ? "" : $this->duration,
'suspended' => (!empty($this->suspended_at))? true:false,
];
}
/**
* Customize the outgoing response for the resource.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Response $response
* @return void
*/
public function withResponse($request, $response)
{
$response->header('Cache-Control', 'max-age=3600');
}
}
Однако это не сработало. Я наконец смог вернуть заголовок, выполнив это:
return response(RouteResource::collection($routes))->header('Cache-Control', 'max-age=3600');
Но это неправильно или больше похоже на взлом. Я хочу знать, почему он изначально не работал с моим ресурсом, как описано в документации, как мне вернуть заголовок cache-control
в моем ответе?