aboutsummaryrefslogtreecommitdiff
path: root/files/ru/using_firefox_1.5_caching
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/using_firefox_1.5_caching
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/using_firefox_1.5_caching')
-rw-r--r--files/ru/using_firefox_1.5_caching/index.html210
1 files changed, 210 insertions, 0 deletions
diff --git a/files/ru/using_firefox_1.5_caching/index.html b/files/ru/using_firefox_1.5_caching/index.html
new file mode 100644
index 0000000000..2db6fe3556
--- /dev/null
+++ b/files/ru/using_firefox_1.5_caching/index.html
@@ -0,0 +1,210 @@
+---
+title: Использование кэширования в Firefox 1.5
+slug: Using_Firefox_1.5_caching
+translation_of: Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching
+---
+<div>{{FirefoxSidebar}}</div><p> </p>
+
+<h3 id="Introduction" name="Introduction">Введение</h3>
+
+<p><a href="/en/Firefox_1.5_for_developers" title="en/Firefox_1.5_for_developers">Firefox 1.5</a> использует кэширование целых Web-страниц, включая их JavaScript-состояния, в рамках сессии браузера. Переходы по посещённым страницам вперёд-назад не требуют загрузки страниц, а JavaScript-состояния сохраняются. Эта функция, обозначаемая иногда как <strong>bfcache</strong> (Back-Forward Cache), делает навигацию по страницам очень быстрой. Такое кэшированное состояние сохраняется, пока пользователь не закроет браузер.</p>
+
+<p>Есть случаи, в которых Firefox не кэширует страницы. Вот некоторые обычные программные причины того, что страница не кэширована:</p>
+
+<ul>
+ <li>страница использует обработчик <code>unload</code> или <code>beforeunload</code>;</li>
+ <li>страница устанавливает заголовок «cache-control: no-store».</li>
+ <li>доступ к сайту происходит по протоколу HTTPS, а страница устанавливает по меньшей мере один из следующих заголовков:
+ <ul>
+ <li>«Cache-Control: no-cache»</li>
+ <li>«Pragma: no-cache»</li>
+ <li>с заголовком «Expires: 0» or «Expires» со значением даты, лежащим в прошлом относительно значению заголовка «Date» (если только не указан также заголовок «Cache-Control: max-age=»);</li>
+ </ul>
+ </li>
+ <li>страница не полностью загрузилась, когда пользователь ушёл с неё, или имеет прерванные сетевые запросы по другим причинам (например, <code>XMLHttpRequest</code>));</li>
+ <li>страница имеет работающие IndexedDB-транзакции;</li>
+ <li>страница верхнего уровня содержит фреймы (например, {{ HTMLElement("iframe") }}), которые не кэшируются по одной из перечисленных здесь причин;</li>
+ <li>страница находится в фрейме и пользователь загружает новую страницу в этот фрейм (в этом случае, когда пользователь уходит со с этой страницы, последнее загруженное в фреймы содержимое есть то, что закэшировано).</li>
+</ul>
+
+<p>Эта новая функция кэширования меняет поведение загрузки страницы, так что Web-авторы могут захотеть:</p>
+
+<ul>
+ <li>узнать, когда на страницу происходит переход (когда она загружается из пользовательского кэша);</li>
+ <li>определить поведение страницы, когда пользователь уходит со страницы (позволяя всё же странице быть закэшированной).</li>
+</ul>
+
+<p>Это позволяют сделать два новых события браузера.</p>
+
+<h3 id="New_browser_events" name="New_browser_events">Новые события браузера</h3>
+
+<p>Если вы используете эти новые события, ваши страницы продолжат правильно отображаться в других браузерах (мы протестировали старые версии Firefox, Internet Explorer, Opera и Safari), а при загрузке в Firefox 1.5 добавится новая функциональность кэширования.</p>
+
+<p>Примечание: по состоянию на октябрь 2009 года разработческие версии Safari добавили поддержку этих новых событий (см. <a class="link-https" href="https://bugs.webkit.org/show_bug.cgi?id=28758" title="https://bugs.webkit.org/show_bug.cgi?id=28758">webkit-баг</a>).</p>
+
+<p>Стандартное поведение для Web-страниц следующее:</p>
+
+<ol>
+ <li>Пользователь переходит на страницу.</li>
+ <li>По мере загрузки страницы выполняются инлайновые скрипты.</li>
+ <li>Как только страница загрузилась, срабатывает обработчик <code>onload</code>.</li>
+</ol>
+
+<p>Некоторые страницы включают четвёртый шаг. Если страница использует обработчик <code>unload</code> или <code>beforeunload</code> handler, он срабатывает прежде чем пользователь уходит со страницы. Если присутствует обработчик <code>unload</code>, эта страница не будет кэширована.</p>
+
+<p>Когда пользователь переходит на кэшированную страницу, инлайновые скрипты и обработчик <code>onload</code> не запускаются (шаги 2 и 3), так как в большинстве случаев эффекты этих скриптов были сохранены.</p>
+
+<p>Если страница содержит скрипты или иное поведение, запускаемое в течение загрузки, которое вы хотите продолжить выполнять каждый раз, когда пользователь заходит на страницу, или если вы хотите знать, когда пользователь заходит на кэшированную страницу, используйте новое событие <code>pageshow</code>.</p>
+
+<p>Если у вас есть поведение, запускаемое, когда пользователь уходит со страницы, но вы хотите воспользоваться новой функциональностью кэширования, и поэтому не хотите использовать обработчик unload, используйте новое событие <code>pagehide</code>.</p>
+
+<h4 id="pageshow_event" name="pageshow_event">Событие pageshow</h4>
+
+<p>Это событие работает так же, как событие <code>load</code>, но срабатывает каждый раз при загрузке страницы (в то время как событие <code>load</code> в Firefox 1.5 не срабатывает, когда страница загружается из кэша). При первой загрузке страницы событие <code>pageshow</code> срабатывает сразу после события <code>load</code>. Событие <code>pageshow</code> использует булевское свойство <code>persisted</code>, которое выставляется в <code>false</code> при начальной загрузке. Оно выставляется в <code>true</code>, если это не начальная загрузка (то есть когда страница уже кэширована).</p>
+
+<p>Выполняйте любой JavaScript-код, который должен отработать при каждой загрузке страницы, при срабатывании событий <code>pageshow</code>.</p>
+
+<p>Вызывая JavaScript-функции в обработчике события <code>pageshow</code>, вы можете обеспечить их вызов при загрузке страницы в браузерах, отличных от Firefox 1.5, вызывая этот обработчик в обработчике события <code>load</code>, как показано в примере ниже.</p>
+
+<h4 id="pagehide_event" name="pagehide_event">Событие pagehide</h4>
+
+<p>Если вы хотите определить поведение, которое происходит, когда пользователь уходит со страницы, но не хотите использовать событие <code>unload</code> (что воспрепятствовало бы кэшированию страницы), вы можете использовать новое событие <code>pagehide</code>. Как и <code>pageshow</code>, событие <code>pagehide</code> использует булевское свойство <code>persisted</code>. Оно выставляется в <code>false</code>, если страница не кэширована в браузере, а в <code>true</code>,— если кэширована. Когда это свойство выставлено в <code>false</code>, обработчик <code>unload</code>, если он есть, вызывается сразу после события <code>pagehide</code>.</p>
+
+<p>Firefox 1.5 пытается имитировать события загрузки в том же порядке, в каком они срабатывают при начальной загрузке страницы. Фреймы обрабатываются таким же образом, что и документ верхнего уровня. Если страница содержит фреймы, то при загрузке кэшированной страницы:</p>
+
+<ul>
+ <li>События <code>pageshow</code> из каждого фрейма срабатывают перед событием <code>pageshow</code> в главном документе.</li>
+ <li>Когда пользователь уходит с кэшированной страницы, событие <code>pagehide</code> из каждого фрейма срабатывает перед событием <code>pagehide</code> в главном документе.</li>
+ <li>Для навигации, происходящей внутри отдельного фрейма, события срабатывают только в затронутом фрейме.</li>
+</ul>
+
+<h4 id="pagehide_event" name="pagehide_event">Кэширование страницы несмотря на обработчики <code>unload</code> и <code>beforeunload</code></h4>
+
+<p>Если вы хотите использовать события <code>unload</code> или <code>beforeunload</code>, сохранив кэширование страницы, вы можете просто удалить эти события в обработчике события и восстановить их в обработчике <code>pageshow</code>, если возвращаетесь на эту страницу:</p>
+
+<pre>window.addEventListener('pageshow', PageShowHandler, false);
+window.addEventListener('unload', UnloadHandler, false);
+
+function PageShowHandler() {
+ window.addEventListener('unload', UnloadHandler, false);
+}
+
+function UnloadHandler() {
+ window.removeEventListener('unload', UnloadHandler, false);
+}
+</pre>
+
+<h3 id="Пример_кода">Пример кода</h3>
+
+<p>Приведённый ниже пример реализует страницу, которая использует обработчики <code>load</code> и <code>pageshow</code>. Поведение этой страницы следующее:</p>
+
+<ul>
+ <li>В браузерах, отличных от Firefox 1.5, при каждой загрузке страницы происходит следующее: событие <code>load</code> вызывает функцию <code>onLoad</code>, которая вызывает функцию <code>onPageShow</code> (а также дополнительную функцию).</li>
+</ul>
+
+<ul>
+ <li>В Firefox 1.5 при первой загрузке страницы событие <code>load</code> работает так же, как и в других браузерах. Кроме того, срабатывает событие <code>pageshow</code>, и, так как <code>persisted</code> установлено в <code>false</code>, не предпринимается никаких дополнительных действий.</li>
+</ul>
+
+<ul>
+ <li>В Firefox 1.5 при загрузке страницы из кэша срабатывает только событие <code>pageshow</code>. Так как<code> persisted</code> установлено в <code>true</code>, вызывается только JavaScript-код в функции <code>onPageShow</code>.</li>
+</ul>
+
+<p>В этом примере:</p>
+
+<ul>
+ <li>Страница вычисляет и обображает текущие дату и время каждый раз при загрузке. Это вычисление включает секунды и миллисекунды, так что вы легко можете протестировать функциональность.</li>
+ <li>Курсор помещается в поле Name при первой загрузке страницы. В Firefox 1.5 при возвращении на страницу курсор остаётся в том поле, где он был, когда пользователь ушёл со страницы. В других браузерах курсор опять помещается в поле Name.</li>
+</ul>
+
+<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd"&gt;
+&lt;HTML&gt;
+&lt;head&gt;
+&lt;title&gt;Order query : Firefox 1.5 Example&lt;/title&gt;
+&lt;style type="text/css"&gt;
+body, p {
+ font-family: Verdana, sans-serif;
+ font-size: 12px;
+ }
+&lt;/style&gt;
+&lt;script type="text/javascript"&gt;
+function onLoad() {
+ loadOnlyFirst();
+ onPageShow();
+}
+
+function onPageShow() {
+//вычисление текущего времени
+ var currentTime= new Date();
+ var year=currentTime.getFullYear();
+ var month=currentTime.getMonth()+1;
+ var day=currentTime.getDate();
+ var hour=currentTime.getHours();
+ var min=currentTime.getMinutes();
+ var sec=currentTime.getSeconds();
+ var mil=currentTime.getMilliseconds();
+ var displayTime = (month + "/" + day + "/" + year + " " +
+ hour + ":" + min + ":" + sec + ":" + mil);
+ document.getElementById("timefield").value=displayTime;
+}
+
+function loadOnlyFirst() {
+ document.zipForm.name.focus();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload="onLoad();" onpageshow="if (event.persisted) onPageShow();"&gt;
+&lt;h2&gt;Order query&lt;/h2&gt;
+
+&lt;form name="zipForm" action="http://www.example.com/formresult.html" method="get"&gt;
+&lt;label for="timefield"&gt;Date and time:&lt;/label&gt;
+&lt;input type="text" id="timefield"&gt;&lt;br&gt;
+&lt;label for="name"&gt;Name:&lt;/label&gt;
+&lt;input type="text" id="name"&gt;&lt;br&gt;
+&lt;label for="address"&gt;Email address:&lt;/label&gt;
+&lt;input type="text" id="address"&gt;&lt;br&gt;
+&lt;label for="order"&gt;Order number:&lt;/label&gt;
+&lt;input type="text" id="order"&gt;&lt;br&gt;
+&lt;input type="submit" name="submit" value="Submit Query"&gt;
+&lt;/form&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+
+<p>Напротив, если приведённая выше страница не слушает событие <code>pageshow</code> и выполняет все вычисления в обработчике события <code>load</code> (если код написан так, как показано в примере ниже), как положение курсора, так и дата/время в Firefox 1.5 будут кэшированы, когда пользователь when the user navigated away from the page. When the user returned to the page, the cached date/time would display.</p>
+
+<pre>&lt;script&gt;
+function onLoad() {
+ loadOnlyFirst();
+
+//calculate current time
+ var currentTime= new Date();
+ var year = currentTime.getFullYear();
+ var month = currentTime.getMonth()+1;
+ var day = currentTime.getDate();
+ var hour=currentTime.getHours();
+ var min=currentTime.getMinutes();
+ var sec=currentTime.getSeconds();
+ var mil=currentTime.getMilliseconds();
+ var displayTime = (month + "/" + day + "/" + year + " " +
+ hour + ":" + min + ":" + sec + ":" + mil);
+ document.getElementById("timefield").value=displayTime;
+}
+
+function loadOnlyFirst() {
+ document.zipForm.name.focus();
+}
+&lt;/script&gt;
+&lt;/head&gt;
+
+&lt;body onload="onLoad();"&gt;
+</pre>
+
+<h3 id="Developing_Firefox_extensions" name="Developing_Firefox_extensions">Developing Firefox extensions</h3>
+
+<p>Firefox 1.5 <a href="/en/Building_an_Extension" title="en/Building_an_Extension">extensions</a> need to allow for this caching functionality. If you are developing a Firefox extension that you want to be compatible with both 1.5 and earlier versions, make sure that it listens for the <code>load</code> event for triggers that can be cached and listens for the <code>pageshow</code> event for triggers that shouldn’t be cached.</p>
+
+<p>For instance, the Google Toolbar for Firefox should listen for the <code>load</code> event for the autolink function and to the <code>pageshow</code> event for the PageRank function in order to be compatible with both 1.5 and earlier versions.</p>
+
+<p>{{ languages( { "it": "it/Usare_il_caching_di_Firefox_1.5", "de": "de/Benutzen_des_Zwischenspeichers_in_Firefox_1.5_(caching)", "fr": "fr/Utilisation_du_cache_de_Firefox_1.5", "ja": "ja/Using_Firefox_1.5_caching" } ) }}</p>