Как я могу заставить браузер видеть изменения CSS и JavaScript?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
52
задан Community 23 May 2017 в 00:29
поделиться

5 ответов

Я нашел, что при добавлении последней измененной метки времени файла на конец URL, браузер запросит файлы, когда это будет изменено. Например, в PHP:

function urlmtime($url) {
   $parsed_url = parse_url($url);
   $path = $parsed_url['path'];

   if ($path[0] == "/") {
       $filename = $_SERVER['DOCUMENT_ROOT'] . "/" . $path;
   } else {
       $filename = $path;
   }

   if (!file_exists($filename)) {
       // If not a file then use the current time
       $lastModified = date('YmdHis');
   } else {
       $lastModified = date('YmdHis', filemtime($filename));
   }

   if (strpos($url, '?') === false) {
       $url .= '?ts=' . $lastModified;
   } else {
       $url .= '&ts=' . $lastModified;
   }

   return $url;
}

function include_css($css_url, $media='all') {
   // According to Yahoo, using link allows for progressive 
   // rendering in IE where as @import url($css_url) does not
   echo '<link rel="stylesheet" type="text/css" media="' .
        $media . '" href="' . urlmtime($css_url) . '">'."\n";
}

function include_javascript($javascript_url) {
   echo '<script type="text/javascript" src="' . urlmtime($javascript_url) .
        '"></script>'."\n";
}
25
ответ дан Markus Safar 7 November 2019 в 09:33
поделиться

Некоторые решения, которые я видел, включают добавление номера версии до конца файла в форме строки запроса.

<script type="text/javascript" src="funkycode.js?v1">

Вы могли использовать число пересмотра SVN для автоматизации этого для Вас включением Word LastChangedRevision в Вашем файле HTML после, где v1 появляется выше. Необходимо также установить репозиторий, чтобы сделать это.

я надеюсь, что это далее разъясняет мой ответ?

Firefox также позволяет нажимать CTRL + R для перезагрузки всего на конкретной странице.

10
ответ дан Community 7 November 2019 в 09:33
поделиться

По-моему, лучше сделать часть номера версии самого файла, например, myscript.1.2.3.js. Можно установить веб-сервер, чтобы кэшировать этот файл навсегда, и просто добавить новый js файл, когда у Вас есть новая версия.

7
ответ дан Alexander Elgin 7 November 2019 в 09:33
поделиться

Когда Вы выпускаете новую версию своих библиотек CSS или JS, заставляете следующее происходить:

  1. изменяют имя файла для включения строки единственной версии
  2. , изменяют файлы HTML, которые ссылаются на библиотеку для указания на имеющий версию файл

(это обычно - довольно простой вопрос для сценария выпуска)

Теперь, можно установить Истекание для CSS/JS, чтобы быть годами в будущем. Каждый раз, когда Вы изменяете содержание, если HTML ссылки укажет на новый URI, браузеры больше не будут использовать старую кэшируемую копию.

Это вызывает кэширующееся поведение, которое Вы хотите, не требуя ничего пользователя.

6
ответ дан Justin Sheehy 7 November 2019 в 09:33
поделиться

Я также задавался вопросом, как сделать это, когда я нашел ответ grom. Спасибо за код.

я боролся с пониманием, как код, как предполагалось, использовался. (Я не использую систему управления версиями.), Таким образом, Вы включаете метку времени (ts) при вызове таблицы стилей. Вы не планирование изменения таблицы стилей часто:

<?php 
    include ('grom_file.php');
    // timestamp on the filename has to be updated manually
    include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>
6
ответ дан Michelle 7 November 2019 в 09:33
поделиться
Другие вопросы по тегам:

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