GWT Caching Concept - PullRequest
       10

GWT Caching Concept

8 голосов
/ 28 февраля 2011

Может ли кто-нибудь объяснить мне простым термином концепцию кэширования в GWT.Я читал это во многих местах, но может быть из-за моих ограниченных знаний, я не в состоянии понять это.

Такие как nocache.js, cache.js

или другие вещинапример, создание файлов кэша клиента навсегда или как сделать файлы кэшированными клиентом, а затем, если файл изменяется только на сервере, клиент загружает эти файлы снова

Ответы [ 2 ]

20 голосов
/ 28 февраля 2011

Обычно существует 3 типа файлов -

  1. Cache Forever
  2. Кэш для некоторые время
  3. Never Cache

Некоторые файлы никогда не могут быть кэшированы и всегда будут попадать в область «никогда не кэшировать».Но наибольшая производительность достигается за счет систематического преобразования файлов из второго сегмента в файлы, которые можно кэшировать вечно.GWT позволяет легко делать это различными способами.

Файлы <md5>.cache.js надежно кешируются вечно.Если они когда-либо изменятся, GWT переименует файл, и браузер будет вынужден загрузить его снова.

Файл .nocache.js никогда не должен кэшироваться.Этот файл изменяется, даже если вы измените одну строку кода и перекомпилируете.Файл nocache.js содержит ссылки <md5>.cache.js, поэтому важно, чтобы в браузере всегда была самая последняя версия этого файла.

В третьем сегменте содержатся изображения, CSS и любые другие статические ресурсы, которыечасть вашего приложения.CSS-файлы постоянно меняются, поэтому вы не можете сказать браузеру «кешировать навсегда».Но если вы используете ClientBundle / CssResource , GWT будет управлять файлом за вас.Каждый раз, когда вы меняете CSS, GWT будет переименовывать файл, и поэтому браузер будет вынужден загрузить его снова.Это позволяет вам устанавливать сильные заголовки кэша для достижения максимальной производительности.

В итоге -

  1. Для всего, что соответствует .cache. , установите удаленный входзаголовок -the-future истекает, фактически давая браузеру указание сохранять его в кэше навсегда.
  2. Для всего, что соответствует .nocache. , установите заголовки кэша, которые заставляют браузер повторно проверять ресурс с помощьюсервер.
  3. Для всего остального вы должны установить короткий заголовок expires в зависимости от того, как часто вы меняете ресурсы.
  4. Попробуйте использовать ClientBundle / CssResource;это автоматически переименовывает ваши ресурсы в * .cache bucket
2 голосов
/ 28 февраля 2011

В этом блоге содержится хороший обзор процесса начальной загрузки GWT (и, между прочим, многих других частей системы GWT), который имеет много общего с тем, что кэшируется и почему.

По сути, сгенерированный файл nocache.js является относительно небольшим битом JS, единственная цель которого - решить, какую сгенерированную перестановку следует загрузить.

Каждая индивидуальная перестановка состоит из реализации вашего приложения, специфичной для браузера, языка и т. Д. Пользователя. Это намного больше кода, чем простой загрузочный код, и поэтому его необходимо кэшировать, чтобы приложение быстро реагировало. Это файлы cache.html, сгенерированные компилятором GWT.

Когда вы перекомпилируете и развернете свое приложение, ваши пользователи будут загружать файл nocache.js как обычно, но это скажет их браузерам загрузить новый файл cache.html с новыми функциями приложения. Теперь это будет также кэшироваться при следующей загрузке вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...