for (Integer i : l)
{
if (i.intValue() == 5){
itemsToRemove.add(i);
break;
}
}
Ловушка - это удаление элемента из списка, если вы пропустите внутренний вызов iterator.next (). он все еще работает! Хотя я и не предлагаю писать такой код, он помогает понять концепцию: -)
Cheers!
Мы добавляем номер сборки продукта в конец всего JavaScript (и CSS и т.д.) как так:
<script src="MyScript.js?4.0.8243">
Браузеры игнорируют все после того, как вопросительный знак кроме обновлений вызывает новый URL, что означает перезагрузку кэша.
Это обладает дополнительным преимуществом, что можно установить HTTP-заголовки, которые означают "никогда кэш!"
Это содержит на копию, кэшируемую в браузере, даже при том, что веб-сервер имеет более новую версию.
Это, вероятно, потому что HTTP Истекает / заголовки Управления Кэша установлены.
http://developer.yahoo.com/performance/rules.html#expires
я записал об этом здесь:
http://www.codinghorror.com/blog/archives/000932.html
Это не плохой совет, по сути, но он может вызвать огромные проблемы, если Вы понимаете его превратно. В IIS Microsoft, например, Истекает, заголовок всегда выключается по умолчанию, вероятно, по той самой причине. Путем установки Истекает заголовок на ресурсах HTTP, Вы говорите клиенту никогда проверка на новые версии того ресурса - по крайней мере, только когда дата истечения срока на Истекает заголовок. , Когда я никогда говорю, я имею в виду это - браузер не будет даже просить новую версию; это просто предположит, что его кэшированная версия хороша пойти, пока клиент не очищает кэш, или кэш достигает даты истечения срока. Yahoo отмечает, что они изменяют имя файла этих ресурсов, когда им нужны они обновленный.
Все, что Вы действительно сохраняете здесь, является стоимостью клиента, проверяющего с помощью ping-запросов сервер для новой версии и получающего 304 не измененный заголовок назад в общем падеже, который не изменил ресурс. Это не является много служебным.. если Вы не Yahoo. Несомненно, если у Вас есть ряд изображений или сценариев, которые почти никогда не изменяют, определенно используют клиент, кэширующийся, и включают заголовок Управления Кэша. Кэширование очень важно для производительности браузера; у каждого веб-разработчика должно быть глубокое понимание того, как кэширование HTTP работает. Но только используйте его хирургическим, ограниченным способом к тем определенным папкам или файлам, которые могут извлечь выгоду. Для чего-либо еще риск перевешивает преимущество. Это - конечно, не что-то, что Вы хотите включенный как общее значение по умолчанию для Вашего всего веб-сайта.. если Вам не нравится изменять имена файлов каждый раз изменения содержания.
Я имею также метод просто переименования вещей. Это никогда не перестало работать и довольно легко сделать.
Ваш веб-сервер отправляет правильные заголовки, чтобы сказать браузеру, что имеет новую версию? Я также добавил дату к querystring прежде. т.е. myscripts.js? 12:45:03 date=4/14/2008 (только дата была бы закодирована)
С каждым выпуском мы просто предварительно ожидаем монотонно увеличивающееся целое число к корневому пути всех наших статических активов, который вынуждает клиент перезагрузить (мы видели, что метод строки запроса прерывает IE6 прежде). Например:
Это требует ссылок rejiggering с каждым выпуском, но мы создали функциональность для автоматического изменения ссылок в наши инструменты развертывания.
, После того как Вы делаете это, можно использовать заголовки Expires/Cache-Control, которые позволяют клиентскому кэшу ресурсы JS "навсегда", так как изменения пути с каждым выпуском, который я думаю, - то, что достигал @JasonCohen.
@Jason и Darren
<забастовка> IE6 забастовка> рассматривают что-либо со строкой запроса как некэшируемое. Необходимо найти другой способ получить номер версии в URL, такой как поддельный каталог:
<script src="/js/version/MyScript.js"/>
и просто удаляют тот первый уровень каталога после js на стороне сервера прежде, чем обработать запрос.
РЕДАКТИРОВАНИЕ: Извините все; это - Сквид, не IE6, который не будет кэшироваться со строкой запроса. Больше информации здесь .
Некоторые очень полезные методы в здесь , даже если Вы не планируете использовать powershell для автоматизации развертывания.
Если это имеет значение я видел сайт deviantART , вполне большой, служа их файлам JS в качестве 54504.js. Я просто проверил, и посмотрите, что они теперь служат им в качестве v6core.css?-5855446573 v6core_jc.js? 4150339741 и т.д.
, Если проблема строки запроса возникает из сервера, я предполагаю, что можно управлять этим более или менее.
Я написал в блоге сообщение о том, как мы преодолели эту проблему здесь:
Как избежать проблем с кешированием таблиц стилей JavaScript и CSS в ASP.NET
В принципе, во время разработки вы можете добавить случайное число в строку запроса после имени файла вашего CSS-файла. Когда вы выполняете сборку выпуска, код переключается на использование номера версии вашей сборки. Это означает, что в вашей производственной среде ваши клиенты могут кэшировать таблицу стилей, но всякий раз, когда вы выпускаете новую версию сайта, они будут вынуждены повторно загрузить файл.