Тег ESI не работает в приложении Laravel

Привет, у меня есть следующий вопрос. У меня есть веб-сайт под управлением laravel 5.1, чтобы сделать его доступным для многих пользователей и ускорить загрузку, я использовал Varnish4. Мой лак vlc файл выглядит следующим образом.

backend default {
    .host = "127.0.0.1";
    .port = "80";
}

sub vcl_recv {
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.    
    unset req.http.Cookie;
}

sub vcl_backend_response {
    unset beresp.http.Set-Cookie;
    set beresp.do_esi = true;
    set beresp.ttl = 1m;
    return(deliver);
}

Как вы видите, я включаю esi processign для всех запросов (не лучшая практика, но я пытаюсь заставить все работать) и удаляю все куки в подпрограмме vcl_recv.

Теперь у меня есть шаблон лезвия с блоком esi: include следующим образом:

<esi:remove>
    NO ESI SUPPORT
    <script>window.load_hot = true;</script>
</esi:remove>
<!--esi
    <p>The full text of the license: 
         <esi:include src="http://localhost/date.php" />
    </p>
-->

Маршрут в теге esi include работает нормально и возвращает ожидаемый результат. Система Varnish анализирует блок ESI, как и ожидалось, поскольку резервное сообщение (show NO ESI SUPPORT) не отображается.

Итак, что может быть плохого в этом коде?

2 ответа

Решаемые.

По какой-то причине это:

<esi:remove>
    NO ESI SUPPORT
    <script>window.load_hot = true;</script>
</esi:remove>
<!--esi
    <p>The full text of the license: 
         <esi:include src="http://localhost/date.php" />
    </p>
-->

не работал из-за тега.

После удаления тега вот так:

<esi:remove>
    NO ESI SUPPORT
    <script>window.load_hot = true;</script>
</esi:remove>

<p>The full text of the license: 
         <esi:include src="http://localhost/date.php" />
</p>

Включение esi начало работать, как и ожидалось.

Тег esi:include принимает только путь, а не полный URL с протоколом, именем хоста и т. Д., Например

<esi:include src="/cgi-bin/date.cgi"/>

См.: https://www.varnish-cache.org/docs/4.1/users-guide/esi.html

Другие вопросы по тегам