Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Как почистить кеш файла? Ну то есть я вывожу картинку с сайта и я её заменил. Как кодом почистить её вид?
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Или сразу другой вопрос. Какой строкой кода можно почистить весь кеш на сайте? Например, раз в 10 минут.
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
php artisan cache:clear
не очень понял, но, может быть поможет команда выше.
Для задач по расписанию (раз в 10м, каждый день, раз в месяц и т.п.) в linux средах есть crontab, придется тебе с ним познакомиться.
либо вешать крон сразу на php artisan cache:clear, либо вешать крон на php artisan schedule:run и дальше на уровне логики выполнять задачи.
лучше сразу выбирай второй вариант.
Не в сети
Да в браузере кеш очисти и все. А то что ты хочешь, это надо заголовок посылать точно не помню какой
Не в сети
Автор хочет почистить кэш браузера, а не сервера. Для этого используются заголовки типа Expires. Чтобы полностью отключить кэш для страницы:
Expires: Mon, 1 Jan 1970 00:00:00 GMT Pragma: no-cache Cache-Control: no-cache
Чтобы закэшировать на определённое время (10 минут) — только Expires с нужной датой/временем.
Для более гибкого кэширования (не привязанного ко времени) есть Etag и Last-Modified.
Не в сети
Cache::flush();
Спасибо. Ток я... эм... так и не понял как очистить кеш на конкретный файл(ну просто стрёмно после смены авки, например. чистить кеш всего сайта)
Вот есть к офиц доке код, но что он значит? В аргумент надо кинуть название переменной файла из request?
Cache::forget('key');
п.с щас уже не кешится, дак даж не знаю как потестить)
Изменено Kirir (08.03.2017 15:05:43)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Хм, проверил. Ни один из случаев ниже не работает(ксс даже не чистит).
В общем проверил это
<?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
Не в сети
Не в сети
В смысле? Я не понял ,куда это добавить.
Я ф-иями ларавела файлы пишу и получаю.
Storage::get('file.jpg');
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
В смысле? Я не понял ,куда это добавить.
Я ф-иями ларавела файлы пишу и получаю.
Storage::get('file.jpg');
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Наверное в контроллер обрабатывающий данный вид ?
Не в сети
Картинки кэширует браузер. То есть вы открываете 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.
Не в сети
Страницы 1