Очистка кеша с помощью Laravel

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

Я кодировал только файлы js и css в общей папке. Когда я отправляю его в свой репозиторий git и загружаю на наш общий хостинг через ssh, после этого я копирую его в папку public_html также через ssh, всем клиентским компьютерам по-прежнему необходимо очищать свои кеши вручную, чтобы новые общедоступные файлы вступили в силу. . Я немного изучил смесь laravel, однако я все еще не уверен, как на самом деле использовать ее на живом хостинге.

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
0
3 780
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

mix.js('resources/js/app.js', 'public/js')
   .version();

В настоящее время я использую виртуальный хостинг. Я все еще не уверен, как я буду это пробовать, но, как я понимаю сейчас, кажется, что npm run production скомпилирует все файлы в общую папку проекта, а не в корневой каталог (public_html)

LEAD IT 29.05.2019 05:02

@LEADIT Вы можете сделать npm run production локально, а затем поместить файлы public в папку public_html вашего сервера. Однако я вообще не рекомендую запускать Laravel на виртуальном хостинге.

ceejayoz 29.05.2019 05:03

Нужно ли мне также устанавливать npm на мой живой хостинг?

LEAD IT 29.05.2019 05:25

Хостинг VPS в наши дни стоит очень дешево. Начиная с 3,50 долларов США от AWS lightsail.

Pablo 29.05.2019 05:29

@ceejayoz Я пробовал, и это работает. Однако, когда я использую функцию из одного внешнего js в другой, она возвращает ошибку "функция не определена"

LEAD IT 29.05.2019 06:18

Вы можете включить версию в свои файлы css и js.

<link rel = "stylesheet" href = "{{asset('css/style.css?v=3.0')}}"> //specific versioning
<link rel = "stylesheet" href = "{{asset('css/style.css?v='.rand(1,99))}}"> //random .. every it treats as a new file

Подход rand не является хорошей идеей, если только вы не используете ограничение много выше 99. Частый посетитель будет регулярно просматривать кешированные материалы (и, возможно, несколько разных кешированных версий за одно посещение), а нечастые посетители будут подвергаться гораздо большему использованию полосы пропускания и низкой производительности. поскольку файл CSS будет перезагружаться при каждом просмотре страницы.

ceejayoz 29.05.2019 04:46

@ceejayoz Могу я спросить, что вы можете предложить по этому поводу? Я тоже готов об этом версионировании и некоторые не рекомендуют его по разным причинам.

LEAD IT 29.05.2019 04:56

@LEADIT Смотрите мой ответ. Управление версиями — это основной способ, которым люди справляются с этим — вы увидите почти каждый крупный сайт (включая прямо здесь, на StackOverflow), использующий какой-то подход к управлению версиями. Я не знаю, кто такие «некоторые», но они дают вам плохую/устаревшую информацию.

ceejayoz 29.05.2019 04:57

@ceejayoz Прошу прощения за некоторые обобщения, но я также видел такой ответ о переполнении стека, и ваш комментарий к его ответу очень похож на этот (их способ использования управления версиями). Вот почему я нахожу лучший способ, который я прочитал в вашем комментарии.

LEAD IT 29.05.2019 05:13

Еще один быстрый и грязный способ очистки кеша — использование метки времени последнего изменения файла в качестве строки версии. Таким образом, если вы обновите файл, временная метка тоже изменится. Для этого в PHP есть метод время файла.

Я постоянно использую это в Wordpress, но в шаблоне блейда Laravel это выглядит примерно так:

<script src = "{{ asset('js/scripts.js') }}?ver = {{ filemtime(public_path('js/scripts.js')) }}"></script>

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

В чем преимущество использования встроенного в Laravel способа?

Elwin 15.07.2021 16:24

Кроме того, чтобы избежать утечки времени последней модификации, значение может быть хешировано, например, с помощью md5 или что-то более безопасное, например bcrypt.

Elwin 15.07.2021 16:29

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