Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Http/Middleware/SetCacheHeaders.php
Строк: 85
<?php

namespace IlluminateHttpMiddleware;

use 
Closure;
use 
IlluminateSupportCarbon;
use 
SymfonyComponentHttpFoundationBinaryFileResponse;

class 
SetCacheHeaders
{
    
/**
     * Add cache related HTTP headers.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @param  string|array  $options
     * @return SymfonyComponentHttpFoundationResponse
     *
     * @throws InvalidArgumentException
     */
    
public function handle($requestClosure $next$options = [])
    {
        
$response $next($request);

        if (! 
$request->isMethodCacheable() || (! $response->getContent() && ! $response instanceof BinaryFileResponse)) {
            return 
$response;
        }

        if (
is_string($options)) {
            
$options $this->parseOptions($options);
        }

        if (isset(
$options['etag']) && $options['etag'] === true) {
            
$options['etag'] = $response->getEtag() ?? md5($response->getContent());
        }

        if (isset(
$options['last_modified'])) {
            if (
is_numeric($options['last_modified'])) {
                
$options['last_modified'] = Carbon::createFromTimestamp($options['last_modified']);
            } else {
                
$options['last_modified'] = Carbon::parse($options['last_modified']);
            }
        }

        
$response->setCache($options);
        
$response->isNotModified($request);

        return 
$response;
    }

    
/**
     * Parse the given header options.
     *
     * @param  string  $options
     * @return array
     */
    
protected function parseOptions($options)
    {
        return 
collect(explode(';'rtrim($options';')))->mapWithKeys(function ($option) {
            
$data explode('='$option2);

            return [
$data[0] => $data[1] ?? true];
        })->
all();
    }
}
Онлайн: 0
Реклама