Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Кеширование, версия css файла (https://javascript.ru/forum/misc/80830-keshirovanie-versiya-css-fajjla.html)

TheSanches 10.08.2020 15:55

Кеширование, версия css файла
 
Здравствуйте, подскажите пожалуйста, приемлемо ли использовать следующий код, для избежания кеширования файла css
<script>
	document.write('<link href="/style.css?v='+Math.random()+'" rel="stylesheet" type="text/css">');
</script>

Какие плюсы и минусы данного подхода, и какие есть альтернативы, если этот подход неверный?

Спасибо!

laimas 10.08.2020 16:15

Достаточно просто - /style.css?метка. А вообще, лучше это делать на сервере, подставляя в качестве метки время последнего изменения файла. Если проект предполагает добавления в будущем, то возможны изменения, и тогда придется бороться с кешировнием.

voraa 10.08.2020 16:21

Вопрос - зачем это нужно.
Кеширование помогает снизить время загрузки и ускоряет открытие страницы. Так, что каждый раз считывать файл не следует.
Если в рабочий сайт вносится изменение, то лучше менять имя css файла, с добавлением номера версии вручную.
Например
<link href="/style.2.1.3.css'" rel="stylesheet" type="text/css">
Можно и так
<link href="/style.css?v=2.1.3'" rel="stylesheet" type="text/css">

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

TheSanches 10.08.2020 16:31

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

В итоге на рабочем проекте часто не обновляются стили, а делать ctrl+F5, не совсем удобно, особенно обычному юзеру.
@import 'global.css' all;
@import 'alexandr.css' all;
@import 'andrey.css' all;

@import 'olga.css' all;
@import 'media.css' all;

laimas 10.08.2020 16:36

Занимайтесь этим на сервере, не клиента это забота, есть время последнего изменения файл, да и eTag есть.

TheSanches 10.08.2020 16:39

Спасибо

laimas 10.08.2020 16:42

Время последнего доступа, тут имеется ввиду заголовок Last-modified, а к нему уже прицепом eTag.

laimas 10.08.2020 16:53

О кеше и как работает eTag написано много, например тут. Являюсь подписчиком Хабра, была недавно статья еще об одном применении eTag, интересно.

voraa 10.08.2020 18:34

А файлы указанные в @import не кешируются?

TheSanches 11.08.2020 12:45

Хороший вопрос, об этом я не подумал.


Часовой пояс GMT +3, время: 16:12.