Не кэшировать 1 js скрипт.
Есть скрипт, который в div через таймер показывает определенное число, которое я задаю в отдельном js. Но если не нажимать ctrl + f, то есть не делать чистку кэша - при обновлении показывается старое число.
Сайт на htm. Код div <div id="otschet"></div> код js файла var otschet_text = document.getElementById('otschet'), start_n = 60, finisch_n = 0, sumtime = 15, step_s = sumtime*20, step_n = (start_n-finisch_n)/step_s, pusk_on = 0, text2_on = 0; var otschet_coords = otschet_text.getBoundingClientRect(), otschet_top = otschet_coords.top, vysota_okna = document.documentElement.clientHeight; if (otschet_top < vysota_okna) { var timerId1 = setTimeout(pusk1, 3000) pusk_on = 1; } function pusk1() { var timeout_id = setTimeout(action, 50); } function action() { start_n = (start_n-step_n).toFixed(2); if (start_n > finisch_n) { otschet_text.innerHTML=start_n; timeout_id = setTimeout(action, 50); } else { if (text2_on != 1) { otschet_text.innerHTML='Сейчас будет код'; text2_on = text2_on+1; timeout_id = setTimeout(action, 1000); } else { otschet_text.innerHTML='530' } } } if (pusk_on == 0) { window.addEventListener('scroll', fotschet, false); document.body.addEventListener('scroll', fotschet, false); window.addEventListener('resize', fotschet); function fotschet() { var otschet_coords = otschet_text.getBoundingClientRect(), otschet_top = otschet_coords.top, vysota_okna = document.documentElement.clientHeight; if (otschet_top < vysota_okna) { if (pusk_on == 0) { pusk_on = 1; var timeout_id = setTimeout(action, 50); } } } } "otschet_text.innerHTML='530'" - вот здесь задаю число. вариант с <script src="//webcrasty.ru/jsp/webcrasty.js?115461"></script> Не подходит, т.к нет возможности вручную менять версию, но рандомом не получается почему то сделать, чтобы ver js файла менялась. |
На странице подключения <script src="//webcrasty.ru/jsp/webcrasty.js?время последнего изменения файла"></script>, тогда всегда будет грузиться последняя. Если же ставить просто метку времени, то вообще не будет браться из кеша.
|
метка времени
Цитата:
вот я это тоже нашел,но каким образом сделать так, чтобы бралась эта метка времени? я пробовал сделать вот так: <script src="//webcrasty.ru/jsp/webcrasty.js?<?=filemtime( '//webcrasty.ru/jsp/webcrasty.js' )?>"> но по факту время не подставлялось. если что index у меня не php, а htm |
У вас что статический сайт? Трудно представить динамический сайт шапка страниц которых "мертвая". Как минимум у страницы меняется title, дескриптор и ключевые слова. То есть шапка, это подключаемый элемент страницы использующий серверный язык.
HTML страницы, то есть код на них, тоже может исполняться, для этого нужно добавить это расширение в исполняемые файлы. |
в .htaccess можно указать
<FilesMatch "webcrasty.js"> Header set Cache-Control "max-age=0" </FilesMatch> |
j0hnik, нельзя так делать.
|
laimas,
почему? |
Потому что это топорное решение лишающее пользователя использовать кешируемое.
|
в htaccess не вариант. нужно либо в самом js, либо в html,
как здесь сделать рандомое время файла или версию после каждого обновления файла? "<script src="//webcrasty.ru/jsp/webcrasty.js?115461"></script>" вот эту штуку "?115461" --- и вроде есть какой то скрипт, который добавив в js будет держать кэш некоторое время. хотя бы час будет нормально, но чтобы потом сбрасывался. если есть интегрируйте пожалуйста в скрипт, который в 1 сообщении, т.к месяц провожусь) |
ПОЛУЧИЛОСЬ!!
решение: <script>document.write('<script src="https://webcrasty.ru/jsp/webcrasty.js?dev=' + Math.floor(Math.random() * 100) + '"\><\/script>');</script> |
Часовой пояс GMT +3, время: 14:55. |