Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 07.03.2017 23:42:25

Как почистить кеш файла

Как почистить кеш файла? Ну то есть я вывожу картинку с сайта и я её заменил. Как кодом почистить её вид?


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#2 07.03.2017 23:47:55

Re: Как почистить кеш файла

Или сразу другой вопрос. Какой строкой кода можно почистить весь кеш на сайте? Например, раз в 10 минут.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#3 08.03.2017 02:44:05

Re: Как почистить кеш файла

php artisan cache:clear
не очень понял, но, может быть поможет команда выше.

Для задач по расписанию (раз в 10м, каждый день, раз в месяц и т.п.) в linux средах есть crontab, придется тебе с ним познакомиться.
либо вешать крон сразу на php artisan cache:clear, либо вешать крон на php artisan schedule:run и дальше на уровне логики выполнять задачи.
лучше сразу выбирай второй вариант.

Не в сети

#4 08.03.2017 09:51:51

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как почистить кеш файла

Да в браузере кеш очисти и все. А то что ты хочешь, это надо заголовок посылать точно не помню какой

Не в сети

#5 08.03.2017 12:06:07

Re: Как почистить кеш файла

Автор хочет почистить кэш браузера, а не сервера. Для этого используются заголовки типа Expires. Чтобы полностью отключить кэш для страницы:

Expires: Mon, 1 Jan 1970 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache

Чтобы закэшировать на определённое время (10 минут) — только Expires с нужной датой/временем.

Для более гибкого кэширования (не привязанного ко времени) есть Etag и Last-Modified.

Не в сети

#6 08.03.2017 15:05:09

Re: Как почистить кеш файла

Cache::flush();
Спасибо. Ток я... эм... так и не понял как очистить кеш на конкретный файл(ну просто стрёмно после смены авки, например. чистить кеш всего сайта)

Вот есть к офиц доке код, но что он значит? В аргумент надо кинуть название переменной файла из request?
Cache::forget('key');

п.с щас уже не кешится, дак даж не знаю как потестить)

Изменено Kirir (08.03.2017 15:05:43)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#7 08.03.2017 15:36:45

Re: Как почистить кеш файла

Хм, проверил. Ни один из случаев ниже не работает(ксс даже не чистит).
В общем проверил это

        <?php
            use Illuminate\Support\Facades\Artisan;
            Artisan::call('cache:clear');

             Cache::flush();
            ?>

В общем проверил это

            <script type="text/javascript">


               var csrfToken = $('[name="csrf_token"]').attr('content');

                setInterval(refreshToken, 1);

                function refreshToken(){
                    $.get('refresh-csrf').done(function(data){
                        csrfToken = data; // the new token
                    });
                }

                setInterval(refreshToken, 1); // 1 hour

            </script>

И это в хедер шаблона

        header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
        header("Pragma: no-cache"); //HTTP 1.0
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#8 08.03.2017 21:02:28

Re: Как почистить кеш файла

  1. И это в хедер шаблона

Заголовки же надо не в шаблон, а при отдаче самой картинки! Иначе ты отключаешь кэширование самой страницы.

Не в сети

#9 10.03.2017 16:26:25

Re: Как почистить кеш файла

В смысле? Я не понял ,куда это добавить.

Я ф-иями ларавела файлы пишу и получаю.
Storage::get('file.jpg');
Storage::copy('old/file1.jpg', 'new/file1.jpg');


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#10 11.03.2017 05:15:33

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как почистить кеш файла

Kirir пишет:

В смысле? Я не понял ,куда это добавить.

Я ф-иями ларавела файлы пишу и получаю.
Storage::get('file.jpg');
Storage::copy('old/file1.jpg', 'new/file1.jpg');

Наверное в контроллер обрабатывающий данный вид ?

Не в сети

#11 11.03.2017 10:55:39

Re: Как почистить кеш файла

Парни, включите мозг.

Картинки кэширует браузер. То есть вы открываете http://localhost/avatars/123.png и сервер (Apache и пр.) отдаёт в ответ заголовки типа

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 11 Mar 2017 07:50:39 GMT
Content-Type: image/png
Last-Modified: Wed, 08 Feb 2017 16:39:34 GMT
Etag: "589b49c6-4468"

Взять отсюда:
https://laravel.ru/forum/img/avatars/1994.png?m=1486571974.

Соответственно, чтобы сказать браузеру, что он не должен кэшировать картинку — нужно вместо некоторых из этих заголовков отдавать другие, типа Pragma: no-cache.

Заголовки, которые вы отдаёте из шаблона, на картинки никак не влияют.

Как заставить сервер отдать нужные заголовки для картинки — ищите сами, ибо это совсем элементарные вещи. Во всяком случае, это делается без Laravel и вообще не из PHP.

Не в сети

Подвал раздела