Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
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 ");
}
}
}
Я нашел, что при добавлении последней измененной метки времени файла на конец 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";
}
Некоторые решения, которые я видел, включают добавление номера версии до конца файла в форме строки запроса.
<script type="text/javascript" src="funkycode.js?v1">
Вы могли использовать число пересмотра SVN для автоматизации этого для Вас включением Word LastChangedRevision в Вашем файле HTML после, где v1 появляется выше. Необходимо также установить репозиторий, чтобы сделать это.
я надеюсь, что это далее разъясняет мой ответ?
Firefox также позволяет нажимать CTRL + R для перезагрузки всего на конкретной странице.
По-моему, лучше сделать часть номера версии самого файла, например, myscript.1.2.3.js
. Можно установить веб-сервер, чтобы кэшировать этот файл навсегда, и просто добавить новый js файл, когда у Вас есть новая версия.
Когда Вы выпускаете новую версию своих библиотек CSS или JS, заставляете следующее происходить:
(это обычно - довольно простой вопрос для сценария выпуска)
Теперь, можно установить Истекание для CSS/JS, чтобы быть годами в будущем. Каждый раз, когда Вы изменяете содержание, если HTML ссылки укажет на новый URI, браузеры больше не будут использовать старую кэшируемую копию.
Это вызывает кэширующееся поведение, которое Вы хотите, не требуя ничего пользователя.
Я также задавался вопросом, как сделать это, когда я нашел ответ grom. Спасибо за код.
я боролся с пониманием, как код, как предполагалось, использовался. (Я не использую систему управления версиями.), Таким образом, Вы включаете метку времени (ts) при вызове таблицы стилей. Вы не планирование изменения таблицы стилей часто:
<?php
include ('grom_file.php');
// timestamp on the filename has to be updated manually
include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>