Slim 3: для чего нужен HTTP-кеш?

Для чего нужен HTTP-кеш? Как мне использовать его в Slim 3?

Но я не совсем уверен, как это делается в Slim 3:

use Slim\Http\Request;
use Slim\Http\Response;

require_once __DIR__ . '/../vendor/autoload.php';

// Register service provider with the container
$container = new \Slim\Container;
$container['cache'] = function () {
    return new \Slim\HttpCache\CacheProvider();
};

$app = new \Slim\App($container);

// Add middleware to the application.
$app->add(new \Slim\HttpCache\Cache('cache', 86400));

// Routes:
$app->get('/', function (Request $request, Response $response, array $args) {
    $response->getBody()->write('Hello, World!');

    return $response->withHeader('Content-type', 'application/json');
});

$app->get('/foo', function ($req, $res, $args) {
    $resWithEtag = $this->cache
    ->withEtag($res, 'abc')
    // ->withExpires($res, time() + 60)
    ;

    return $resWithEtag;
});

$app->run();

Любые идеи?


person laukok    schedule 21.12.2015    source источник


Ответы (1)


\Slim\HttpCache\Cache() — это HTTP-кэш для кэширования на стороне клиента (браузера).

Он ожидает до 3 параметров:

 * @param string $type           The cache type: "public" or "private"
 * @param int    $maxAge         The maximum age of client-side cache
 * @param bool   $mustRevalidate must-revalidate

и генерирует соответствующие заголовки HTTP-ответа.

Он не имеет ничего общего с кэшированием на стороне сервера.

person Gennadiy Litvinyuk    schedule 21.12.2015
comment
HTTP Cache отличается от того, что я ищу? - person laukok; 21.12.2015
comment
Я думаю, что это очень разные. Кэширование браузера работает в вашем браузере. Чтобы что-то кэшировать, вы посещаете веб-страницу один раз, затем, если вы снова посещаете эту страницу, браузер не будет отправлять новый запрос, если кеш все еще действителен. В лучшем случае он работает со статическими файлами, такими как css, javascript и изображения. Кэширование на стороне сервера совершенно другое. Вы кэшируете, чтобы сэкономить время на дорогостоящих запросах к базе данных или вычислениях. Для 1-го посетителя это будет медленно, для другого - могло бы быть и быстрее... вы также должны понимать, когда кешировать или дифференцировать кеш... - person Gennadiy Litvinyuk; 21.12.2015