Очистите кэш в JavaScript

1. Строка в растровое изображение

 String  content = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAABGdBTUEAALGPC/xhBQAABURJREFUWAnNWFtMXFUU3XcKBHBmiMZERRmIAuqXtcbE1A/7EDE24iPGxGj88MtHP/TDRzR8gYmPRP1Sv4lKYpqgxBqFWtuAVNJE/VIrmMBAWySNAjMF5HHHte6cPTlzZi4MUxrZyWHvsx9rL849986515PypAJlUYwaDNo6YMqaNZZgp80c6vJIBLBXYiTa29v3DA0NvTAzM/PZwsLCyeXl5TPr6+spDtr0McYc5rLG1BJj28QDUhzjxsHBwWfQ9ITv+6uZEoW5rGEtMQwWMS9JKlHd2NPT82gqlTpVIpfQNGIQi5gYxC5LauLxeEsymfwotFOZAWISG6y4R7ck8ba2tt1zc3PHyuy9aRmx2QOsuE0KpNi1rkHBzf39/b3V1dW3FFQYx9g/Il//mZGB6YxMXszIFO+/jEhDrUjTFZ603eDJAzd50sLbJURwo/ze0dHxBPbfGaQQIScusUoscROXuq6u7mAuyzJ+/kvkjRFfvjnvZ72KAFLi2vDdf11E3twbkduvsUAsc35+/rtEIvEcbpAJuFc1pFCc006A1GsNDQ3PaoLqdTR59YQv7/+WwcKQReniAfqlWz15e19EdtkdDcTU1NTHIPcWpkmMANx+rsRwx9xRjNTcvyKHvvDlvV99webJlrI8bLChxmiihrXEIJYr7Mne8Mc0pvxJsAm386fRaPQuDVJzpQ71+TKgl84OlmHfh0t79JHClUun0z/GYrEnATmB4euK1WED7nNJse/L34PUOewnXYFL1MQipivsTQ7w1zGmK5bA5usB43voVPkJG/3OI+uS8ckGwmyatqbf9emcMYop1zov4snpx3bJHueGwBU7iZvvaVQkuWIV+D27GozvJoYtrw9jTykpBrSBrW3bzWFM41aMmMR2hRzIBf4KEot2dnbu9TyPJ4Sc/PG3yMBZU6wNVDOrmK0+W9u56oeP2HwW2kIO5AJflMRqWltbC1brKB6egRiVnZi/ts+285KK5Grc1Hw1Xljc3NxMLjXBpcQTvl5rVA8kUcS6yziCHtrQ6NraWnIJLmVFVVXVtU5cJtOGGAMkR7FJ6ly1nUMfxfU59ZMpTcim86/hUhGcPCsrKwtWbPqiSdZa1Yqhc9X0q606zGf804s08sVwCVaMERsqm1noyUfYhpmnD6t8rKAz99ja6urq+fyYyPU4JeRdOqZv86ivdrviVzzLZS0gtrKyMuOmNMasf0dXz9a2zWJ7rraC6tzWsPN6mFzDJUtscXHxrGKobkuAGIFsMAZ1btvqU60xztXnaoSCHsy1xHAJiC2Nj4+PWLHAfLDZIUavNrJ1mN/NKZLX0WJdFcYhY2NjP0At8VKmu7q6RnA04ftgTlqvEjnYwDBEm2Rn+X8Z20yK1BPbPd2SQ3d39ynApZVy+I/4J/gR5xlsGwU/PXL6qc1/xNkyNTo62uP25q//4dsMd5ebO9di2x9iE9M9WbDccEjR1hXjNQs9KLZ/7svxZOFpgABblQOJiHz7eOkHRXa90NfX967biGf0Iw9HZD8Ac3uNK6GDBboy6rPnGoePGMQqdu43vS8gPVgBXTGW097wZeTFY758+AteRba457innt/tyQf3FidV7GXEJkZym76+8VT7Co7GxydLu7QHGiPyzv5I0T3FhqW8vjGPUtILLw+SX45lZHAiI8mFjJzjxyZIPT5OJeJ44W3y5CE8p/jYCZONXnjDav73TwRhxOjfkR9VlDA/Fe24z1BKjjfIjvtwp+So+RDOfeocHh4+PDs724v30bBPnb3MKfdTp/u4sIlsZPNIflk/Dv8H0I4Y2Oy/OicAAAAASUVORK5CYII=";
  try {
  byte [] encodeByte=Base64.decode(content ,Base64.DEFAULT);
  Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
  return bitmap;
 } catch(Exception e) {
  e.getMessage();
  return null;
}

2. Битовая карта в строку

public String BitMapToString(Bitmap bitmap){
 ByteArrayOutputStream baos=new  ByteArrayOutputStream();
 bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
 byte [] b=baos.toByteArray();
 String temp=Base64.encodeToString(b, Base64.DEFAULT);
 return temp;
}
168
задан Dylan Brams 26 April 2018 в 09:18
поделиться

7 ответов

Просто добавьте new Date().getTime() конец ссылки так же как требование

'https://stackoverflow.com/questions.php?' + new Date().getTime()

Выход: https://stackoverflow.com/questions.php?1571737901173

просмотр Причины прячет ту же ссылку про запас, Вы должны добавить конец случайного числа ссылки. new Date().getTime() производят другое число.

0
ответ дан 23 November 2019 в 20:53
поделиться

Попробуйте изменить src файла JavaScript? Отсюда:

<script language="JavaScript" src="js/myscript.js"></script>

На это:

<script language="JavaScript" src="js/myscript.js?n=1"></script>

Этот метод должен заставить ваш браузер загружать новую копию файла JS.

38
ответ дан 23 November 2019 в 20:53
поделиться

Вы не можете очистить кеш с помощью javascript. Обычный способ - добавить в файл номер редакции или отметку времени последнего обновления, например:

myscript.123.js

или

myscript.js? Updated = 1234567890

107
ответ дан 23 November 2019 в 20:53
поделиться

Я обычно изменяю версию своего фреймворка, а затем применяю номер версии к путям скриптов и стилей

<cfset fw.version = '001' />
<script src="/scripts/#fw.version#/foo.js"/>
1
ответ дан 23 November 2019 в 20:53
поделиться

Вы также можете принудительно перезагружать код каждый час, например, в PHP:

<?php
echo '<script language="JavaScript" src="js/myscript.js?token='.date('YmdH').'">';
?>

или

<script type="text/javascript" src="js/myscript.js?v=<?php echo date('YmdHis'); ?>"></script>
10
ответ дан 23 November 2019 в 20:53
поделиться

Вот фрагмент того, что я использую для своего последнего проекта.

С контроллера:

if ( IS_DEV ) {
    $this->view->cacheBust = microtime(true);
} else {
    $this->view->cacheBust = file_exists($versionFile) 
        // The version file exists, encode it
        ? urlencode( file_get_contents($versionFile) )
        // Use today's year and week number to still have caching and busting 
        : date("YW");
}

С точки зрения:

<script type="text/javascript" src="/javascript/somefile.js?v=<?= $this->cacheBust; ?>"></script>
<link rel="stylesheet" type="text/css" href="/css/layout.css?v=<?= $this->cacheBust; ?>">

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

Кроме того, это обеспечивает очистку кеша для каждой страницы. загружать в среде разработки, чтобы разработчикам не приходилось беспокоиться об очистке кеша для любых ресурсов (javascript, css, вызовы ajax и т. д.).

5
ответ дан 23 November 2019 в 20:53
поделиться

В зависимости от среды сборки можно запустить dotless.Compiler.exe в качестве задачи сборки.

Например, использование задачи Pre-Build в Visual Studio (all 1 line):

$(SolutionDir)Tools\dotLess\dotless.compiler.exe -m 
    $(ProjectDir)content\css\site.less $(ProjectDir)content\css\site.css

Макросы ( $ (SolityDir) и т.д.) обеспечивают некоторую гибкость при проектировании и размещении файлов. Вместо использования стандартных файлов .less просто ссылайтесь на новые файлы .css в разметке.

-121--1455731-

Для перезагрузки текущей страницы можно вызвать window.location.reload (true) . Он игнорирует все кэшированные предметы и извлекает новые копии страницы, css, изображений, JavaScript и т.д. с сервера. Это не очищает весь кэш, но приводит к очистке кэша для страницы, на которой вы находитесь.

Однако лучшей стратегией является версия пути или имени файла, как указано в различных других ответах. Кроме того, см. Revving Filenames: не используйте строку запросов по причинам, не использующим ? v = n в качестве схемы управления версиями.

189
ответ дан 23 November 2019 в 20:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: