Java (Tomcat): как настроить поддомен без файлов cookie для обслуживания статического содержимого - PullRequest
4 голосов
/ 21 мая 2010

Один из советов от Google и Yahoo! ускорить загрузку веб-страниц - настроить поддомен без файлов cookie для статического содержимого сервера.

Как настроить «поддомен без cookie», используя Tomcat в автономном режиме (этот вопрос не о том, как использовать Apache для обслуживания статического содержимого без использования cookie, а о том, как это сделать в автономном режиме Tomcat)?

Обратите внимание, что меня не волнуют фильтры, поддерживающие If-Modified-Since, а также фильтры, поддерживающие gzipping: статический контент, который я обслуживаю, навсегда кешируется (или его имя изменится), и это уже сжатые данные (так что gzip будет только замедлить передачу).

Нужны ли мне два разных веб-приложения Tomcat? (один "cookiefull" и один "без печенья")

Мне нужны два разных сервлета? (на данный момент у меня есть только один сервлет диспетчера / контроллера).

Почему «обычная» ссылка, скажем, на статическое изображение, вызывается простым способом, если он находится в том же домене, что и основное веб-приложение, а затем вызывается «без файлов cookie», когда оно на поддомене?

Я не совсем понимаю, что происходит: браузер решает добавить к запросу файлы cookie или нет? Если это так, почему бы не добавить файлы cookie в статический запрос на поддомене без файлов cookie.

Любой пример того, что происходит за кулисами, приветствуется:)

Ответы [ 2 ]

3 голосов
/ 21 мая 2010

Вам просто нужно настроить другой домен.Это может указывать на те же веб-приложения.Просто убедитесь, что вы не удаляете куки на этом новом домене.

Например, ваш основной сайт -

  www.example.com

, и у вас может быть другой домен

  static.example.com 

Для ваших статических ресурсов без файлов cookie.Они могут указывать на одни и те же хосты, переходить на один и тот же сервлет.Вам просто нужно убедиться, что в вашем приложении вы не сбросили куки для этого статического содержимого.

РЕДАКТИРОВАТЬ: Предполагая, что ваш статический контент обслуживается сервлетом по умолчанию в Tomcat, вам не нужно ничего делать.Он не удаляет файлы cookie для вас, поэтому ваш новый домен не должен содержать файлы cookie.

Если вам нужно обрабатывать статический контент в одном и том же сервлете, вы можете сделать что-то вроде этого:

   if (!request.getServerName().equals("static.example.com")) {
       // Drop cookie
   }

В этом примере предполагается, что вы не удаляете cookie в своем корневом домене (.example.com).Если вы сделаете это, вы должны получить другой домен, например examplecdn.com.

2 голосов
/ 14 октября 2011

Я написал об этом здесь: Перезапись URL / субдомена (htaccess)

думаю, что у вас это может быть задом наперед (или, возможно, я так), чтобы уточнить, если вы используете cookie-домен и иметь базовый URL-адрес www.По крайней мере, в этом случае куки устанавливаются на www, например: основным установщиком cookie является google analytics, поэтому при установке их скрипта на моем сайте это выглядит так:

`var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'analytics-acc-#],

['_setDomainName', '[ www.valpocreative.com] 2 '],

['_trackPageview']);

`

Здесь вы можете видеть, что я установил для моего основного домена значение www, исправьте меня, если я ошибаюсь в своемВ этом случае мне нужно будет перенаправить www на поддомен не www, а не наоборот.Это также настройка cname, выполненная на моей cpanel (cname = "cdn", указывающая на www.domain.com)

...