2016-03-21 4 views
8

Я работаю над проектом Laravel 5.1, используя множество аякс-вызовов, возвращающих html-блоки.Laravel 5.1 Объектно-ориентированное кэширование ответа ajax

Для оптимизации скорости веб-сайта я хочу реализовать частное и публичное кэширование ответов. это работает отлично, используя следующий код:

 return response() 
     ->json($result) 
     ->header('Cache-Control', 'public, max-age=300'); 

Тем не менее, используя его таким образом обыкновение держать в счетах объектов, которые обновляются в течение 300 секунд.

Существуют ли возможности, позволяющие мне очистить кэш ответов запроса, если и только если обновленные объекты были обновлены?

+0

Чтобы узнать, что они были обновлены, вам необходимо будет отправить фактический запрос. Если вы не создаете какой-то триггер при обновлении значения, которое сообщает кешу, что он больше не должен использоваться –

+0

Yup, я могу использовать E-теги с хешем md5 обновленного состояния. все же я хочу сохранить это как последнее средство и искать изысканный способ в то же время. – Frederiek

ответ

0

Возможно, вы можете попробовать кеширование на стороне сервера с помощью чего-то вроде этого ниже. жаль это сырой

function sometest(User $user) 
{ 

    /** . . .conditions to check if some data has changed . . . **/ 


    $jsonResponse = Cache::remember(Auth::id() . "_sometest", 300, function() use ($user) 
    { 
     $result = $user->all(); //get result here 

     return $result; 
    }); 

    return response()->json($jsonResponse); 
} 

Вы можете прочитать здесь Cache

вы также можете попробовать

  • config caching: PHP ремесленник конфигурации: кэш
  • route caching: PHP ремесленник маршрут: кэш
  • и используя memcached, если вы в состоянии.