Как проверить, существует ли файл в JavaScript - PullRequest
0 голосов
/ 06 июня 2018

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

То, как я думал об этом, - наличие скрипта на HTML-странице.он проверяет, существует ли «sketch1.js», а если нет, очищает кеш и снова тестирует.Затем каждый раз, когда я обновляю файл sketch.js, я добавляю 1 к числу в конце имени.

Пожалуйста, скажите мне, что вы думаете о моем идеальном решении, если я использую другой методочистить мои сайты cahce?Если нет, то как мне провести тестирование, если файл существует?

1 Ответ

0 голосов
/ 07 июня 2018

Отвечая на ваши вопросы о проверке файлов (в ознакомительных целях):

Я предполагаю, что вы используете P5.js в соответствии с тегами записей.

Это правда, чтобы проверить, существует ли изображение, вы можете использовать функцию loadImage .Таким образом, вы можете попытаться предварительно загрузить изображение в переменную и проверить, существует ли объект (проверьте код P5, чтобы узнать, как это сделать).

Что касается тестирования файла .js (или любого другого)Существуя, вы можете использовать loadBytes или httpGet , чтобы попытаться загрузить файл в переменную и, как в примере с изображением, проверить, существует ли объект.

Теперь по вопросу кеширования:

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

Фактически, до недавнего времени javascript не имелвозможность очистки кеша (только несколько браузеров реализуют это, и некоторые люди считают, что угроза безопасности представляет этот уровень браузера для разработчика).Поэтому, даже если вы проверите наличие файлов, вы не сможете гарантировать, что во всех браузерах очищено 100% кэшей.

Один из подходов для вас - создание версий папок с файлами вместо самих файлов.Например, каждая «новая версия» вашего «script.js» будет иметь такие URL-адреса:

http://yoururl.com/scripts/1.0.0/script.js -> Version 1.0.0
http://yoururl.com/scripts/2.0.0/script.js -> Version 2.0.0
http://yoururl.com/scripts/3.1.0/script.js -> Version 3.1.0

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

Для этого, если вы используете статические страницы HTML, веб-сервер автоматическидобавьте заголовок «Last Modified» на свои страницы, позволяя браузеру проверить, является ли последний кэшированный файл .HTML таким же.Если не было обнаружено никаких изменений, он загрузит файл .HTML из кэша, в противном случае он загрузит новый файл .HTML с сервера.Однако, если ваши страницы динамические, вам придется программно добавлять заголовок «Last Modified».

...