Нет заголовка кэша

У меня есть веб-камера, которая каждые 15 минут загружает изображение в папку на моем веб-сервере. И затем у меня есть страница WordPress, на которой отображается это изображение.

Проблема в том, что браузер кэширует изображение и не обновляется, когда я обновляю страницу через 15 минут.

Я пробовал разные варианты, такие как функция wp_get_nocache_headers(), img.decoding = "async"; и некоторые META-методы без кэширования, но ничего не работает.

С вероятностью 99% я делаю это неправильно!

Может ли кто-нибудь дать мне пошаговое руководство, как предотвратить кеш браузера на изображении с веб-камеры? И только одна страница с изображением.

Вы должны дать нам что-то для работы, немного кода. Как сейчас выглядит код вашей страницы? Хотите автоматически просматривать новейшее изображение? Как нам его получить?

KIKO Software 30.05.2024 21:50

Самый простой способ — просто добавить очистку кеша в URL-адрес изображения. Например, вы можете добавить дату/время изменения файла в строку запроса. В качестве альтернативы вы также можете просто добавить случайную строку к URL-адресу в QS, хотя это может привести к некоторым проблемам с производительностью в зависимости от трафика вашего сайта.

Chris Haas 30.05.2024 22:19

Пробовали ли вы установить заголовок ответа cache-control: no-cache в настройках веб-сервера? Вероятно, вы можете заставить его отправлять это специально для этого URL-адреса. Я сомневаюсь, что что-либо в PHP сработает - если URL-адрес указывает непосредственно на файл изображения, то PHP не участвует в его обслуживании, а ваш веб-сервер.

ADyson 31.05.2024 00:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предположим, у вас есть путь к изображению, например

my/path/to/the/image.jpg

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

Но если вместо этого у вас есть что-то вроде этого:

my/path/to/the/image.jpg?v=123

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

t=<the timestamp>

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

Спасибо за ответ. Но есть ли у вас точный пример, который я могу использовать? Я не программист, поэтому мне нужен точный код и где именно его вставить :-)

Robin Andersen 02.06.2024 15:12

@RobinAndersen У меня нет примера, но я применил эту идею примерно 10 раз. Если вам нужны более точные идеи, больше кодовых утверждений, это хорошо. Но затем я прошу вас отредактировать ваш вопрос и показать код, в котором отображается ваше изображение, а также некоторый контекст, например код вокруг него, имя файла и т. д.

Lajos Arpad 02.06.2024 15:15

Привет! Ниже я разместил ответ с описанием того, что я пробовал, и URL-адресом сайта. Может быть, это поможет? Спасибо

Robin Andersen 02.06.2024 15:23

@RobinAndersen, спасибо. Но это больше похоже на редактирование вашего вопроса, чем на ответ. Вы можете нажать кнопку редактирования вашего вопроса и добавить в него дополнительную информацию. Кроме того, вы сказали, что пробовали image.jpg?nocache=<?php echo time(); ?>, и это не сработало. Можете ли вы рассказать мне, как это не сработало? Можете ли вы показать больше кода вокруг него? Что случилось? Вам было показано кэшированное изображение?

Lajos Arpad 02.06.2024 15:27

Это html: <img decoding = "async" src = "visitbudor.no/webcam/webcam2/Skitrekk.jpg?nocache=<?php echo time(); ?>" " = "" alt = " "> И это обслуживает только кэшированное изображение. Если я обновлю свой браузер, я получу то же самое «старое» изображение. Если я очистю кеш браузера, я получу новое и обновленное изображение. Но, возможно, я что-то упускаю из виду? Есть ли что-то еще код, который я также должен где-то реализовать?

Robin Andersen 02.06.2024 15:43

@RobinAndersen, если вы щелкните правой кнопкой мыши свое изображение в браузере, что вы увидите в качестве его источника?

Lajos Arpad 02.06.2024 15:45

Источник: src = "visitbudor.no/webcam/webcam2/Skitrekk.jpg?nocache=<?php echo time(); ?>" " = "" alt = "">

Robin Andersen 02.06.2024 22:05

@RobinAndersen, что src мог бы выглядеть хорошо, если бы он анализировался PHP. Но он не анализируется PHP. Вместо этого он записывается в ваш HTML как необработанное значение HTML. В исходном коде вашей страницы должно получиться что-то вроде src = "visitbudor.no/webcam/webcam2/Skitrekk.jpg?nocache=36848‌​3". Кроме того, вы также можете проверить странный " = "" сразу после значения src.

Lajos Arpad 03.06.2024 15:37

Спасибо, что указали мне в правильном направлении. Я наконец-то заставил его работать.

Robin Andersen 03.06.2024 21:23

@RobinAndersen рад помочь. Если этот ответ решил вашу проблему, вы можете принять его как правильный ответ.

Lajos Arpad 04.06.2024 15:44

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

Добавьте собственную схему структурированных данных на страницы архива WooCommerce
Изменить CSS только для уведомления о новом заказе WooCommerce, отправленного администраторам
Кто-нибудь знает, почему моя cPanel была перенесена, и теперь основной домен изменился на фиктивный домен? И как мне это исправить?
Перевод плагина WordPress не работает с английского на французский, в чем причина?
Как программно получить запрещенные ключи комментариев из панели администратора WordPress > Настройки > Обсуждение?
Добавьте виджет в WooCommerce Checkout Order Review перед кнопкой отправки
Добавьте цену товара за килограмм в уведомление о новом заказе WooCommerce
Данные пользовательского элемента корзины WooCommerce отображаются дважды в блоках корзины и оформления заказа
Пропустить отложенную загрузку по классу изображения, добавленному в элемент рисунка в WordPress
PHP-скрипт WordPress некорректно вызывается Javascript