2016-03-21 1 views
4

У меня есть Apache с http2, и я сделал серверный щелчок файлов, которые я хотел бы сохранить в кеше браузера, но это не так, и я не знаю почему.Как я могу сохранить файлы в кеше браузера после нажатия на него с помощью нажатия на сервер?

Я сделал push с файлом php, следующим.

header('Link: <'https://www.myweb.com/mypath'>;rel="preload";as="video"', FALSE); 

С моей точки зрения, толкающий сервер работает, потому что я могу увидеть запросы к серверу в access_log, но я думаю, что файлы должны быть сохранены в кэше браузера, но это не.

Я пытаюсь сделать серверное нажатие файла, а после него запросить этот файл и получить его из кеша (см. На консоли сети Chrome «из кеша»).

Благодаря

+0

Вы подтвердили заголовки 'Cache-Control' от нажатого содержимого? Какой из них он имеет? Можно установить 'public, max-age = somevalue',' expires', 'etag' и' last-modified'. Если с другой стороны «private», «no-store» или «no-cache» установлены, то нажатие на сервер не поможет вам. Нагрузка сервера просто помещает данные в локальный кеш веб-браузера. В заголовке 'Cache-Control' указывается, будут ли использоваться данные из кеша и как долго они будут использоваться. – Oleg

+0

Я об этом подумал, но я не знаю, где установить эти параметры. Если я поместил URL-адрес файла, который я нажимаю, файл загружается и сохраняется в кеше, потому что у него есть параметры, которые вы сказали. Но кажется, что когда я делаю push, у него нет параметров. Я не знаю, должен ли я установить некоторый параметр в строке push (header ...). – Elo

+1

IMO, настройка кэширования корректно даже для веб-сайта HTTP/1.1 трудно в любое время года. Сочетание этого с HTTP2 Push еще сложнее. [Вот статья] (https://www.shimmercat.com/ru/info/articles/caching/) с некоторыми подробностями о том, как объединить параметр запроса, сделать push и т. Д. Полное раскрытие информации, мы создали большую часть сервера, чтобы получить это право, и мы все еще в пути. – dsign

ответ

0

Все, что вы сказали верно, и я был на моем коде, но проблема была в том понимании, в Google Chrome Cache спасительной.

Когда вы отправляете файл с сервером Нажимаете на HTTP2-соединение, файл, запрошенный через серверный push, отправляется как ответ клиенту, но Google Chrome не сохраняет его в кеш Google Chrome до тех пор, пока браузер не будет запрашиваться в браузере ,

Например: сервер отправляет ответ index.html с его stylesheet.css (этот отправляется с нажатием сервера). Таблица стилей будет сохранена только в кеше Google Chrome, когда Google Chrome запросит Stylesheet.css (клиент запросил только индекс html и сделал толчок таблицы стилей). Если Google Chrome не запрашивает его, он будет невостребованным, и он не будет сохранен в кеше.

Если у вас есть успешный толчок и перезагрузка страницы, вы увидите «из кеша» в Google Chrome.

Спасибо за ваше время.

Смежные вопросы