Как лучше избежать загрузки кешированных файлов?

на этапе разработки и тестирования надо отключить кешрование

делаю так:

или так:
<script src="1.js?+Math.random()"></script>

что из этого лучше?
этого достаточно или лучше в файле index.php это делать ?

Дополнительно:

А зачем это делать?

  • Возможно, стоит познакомится с документацией. Если доступно изменение заголовков - то поставить на период отладки Cache-Control: no-store может оказаться разумным решением.

    Более правильным вариантом, если изменения заголовков невозможны, будет прописать время изменения файла.

    mayton2019, к примеру, включено кэширование заголовком Cache-Control: навечно

  • ksnk, где нужно прописывать Cache-Control ?
    в php файле?
  • ksnk, ну да. Для вечного кеша есть даже эффект "отравления". Poisoned cache.

    Но если кеш nginx не справляется со своей работой (вы его пытаетесь хачить) то значит
    надо пересмотреть саму стратегию.

    Я-бы обновил версию приложения так чтобы 100% ссылок обновились. Например в RestAPI
    делают версии /api/v1, /api/v2 и так далее. Обновляем версию и старые кеши умерли навсегда.
    До перезагрузки nginx или там до чистки диска.

    Вот. А по проблеме кеша еще один великий писал. Что в It есть две проблемы. Как назвать
    переменную. И как инвалидировать кеш.

  • mayton2019, а если у меня совсем простая архитектура -

    одностраничник html с прилинкованными к нему файлами js и css

    все три файла надо некешировать на время внедрения и тестирования

    будет ли достаточным добавлять к пути к файлам случайное число +Math.random() или ?+Date.now() ?
    и указать заголовок Cache-Control в html метатегах и в php

  • tyxeo, да что-то вроде
    В принципе - этого может хватить.

    Если это одностраничник с известно где расположенными стилями и скриптами, то можно так генерировать ссылки на них

    Так появится возможность все таки кэшировать на клиенте неизмененные файлы. По внешнему виду ссылок (количество цифр после имени файла) можно понять, находит php файл исходник или нет.

  • ksnk, так правильно?

  • tyxeo, Нужно смотреть по вкладке Сеть в Хроме. Если файлы каждое обновление страницы качаются заново - то правильно. Если не качаются - нужно смотреть какие реально заголовки кэширования долетают до броузера и почему не те, которые нужно
  • tyxeo, поставь time-to-live в 5 минут и тебе не нужно будет никогда заниматься всякой чепухой типа
    ломать URL.
  • На этапе разработки достаточно просто держать открытой консоль браузера со включенной галочкой отключения кэша и больше ничего делать не нужно.

    Как лучше избежать загрузки кешированных файлов?

    • в моем случае тестируют посетители сайта
    • tyxeo, ну тогда не нужно отключать кэширование полностью. Достаточно обеспечить загрузку каждой новой версии файла

      на php:

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

      Можно использовать сборщики фронта. В них уже встроены подобные механизмы.

    • добавлление к пути к файлам случайное число +Math.random() или ?+Date.now()
      - это работает ?
    • tyxeo, да, это полностью предотвращает кэширование.
      только не в таком виде наверное. Так это просто текст
    • tyxeo, тогда уж на пхп

      src="1.js?<?= time() ?>"

    • и еще сделал так на сервере в файле index.php :

    • tyxeo, ну вообще так делать не стоит. Я имею ввиду не стоит менять код для разработки. потом менять его для продакшена. поэтому я и предложил вариант с filemtime - он и для продакшена годится. В отличие от time()
      Эти временные заголовки (которые в продакшене будут не нужны) тоже лучше прописать отдельно, в .htaccess

      Header set Cache-Control "no-store"

    • tyxeo, вот вам полный набор антикэша

    • вариант с filemtime хорош
      но я еще думаю надо ли и как некешировать html файл

    • нет + после src="1.js?
      это допустимый синтаксис?
    • tyxeo, да
    • но я еще думаю надо ли и как некешировать html файл
    • tyxeo, заголовки в htaccess должны помочь

     

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

     

      • Как лучше избежать загрузки кешированных файлов?Есть ответ
      • 07.04.2024
      Ответить

      Для избежания загрузки кешированных файлов на веб-сайте можно применить несколько методов:

      1. Управление кешированием на стороне сервера:
      - Установите правильные заголовки кеширования в конфигурации сервера. Например, вы можете установить заголовки Cache-Control и Expires для указания браузеру, как долго хранить кешированные файлы.
      - Используйте версионирование файлов или добавляйте случайные параметры к URL-адресам файлов, чтобы обновить кеш браузера при изменении файлов.

      2. Изменение URL-адресов файлов:
      - Используйте уникальные URL-адреса для каждой версии файла. Например, добавьте временную метку или хеш к имени файла.
      - Используйте query string параметры для указания версии файла, например, "styles.css?v=2". Это заставит браузеры рассматривать файл как новый и загружать его заново, даже если он кеширован.

      3. Использование мета-тега no-cache:
      - Добавьте мета-тег в шапку HTML-страницы. Это указывает браузеру не кешировать содержимое страницы.

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

    Оставить комментарий