Java Web Start и кеширование веб-прокси

У меня есть многофункциональное Интернет-приложение, которое предоставляется в схеме SaaS (облако) через Интернет. Приложение развертывается через Java Web Start: пользователи нажимают ссылку, указывающую на файл JNLP, на сайт провайдера (http://somesite.com/myapp/myapp.jnlp); затем приложение загружается и локально кэшируется (из клиентской панели управления Java я вижу, что размер приложения составляет около 40 МБ). Я ожидаю, что если не произойдет никаких изменений на стороне сервера, клиенты будут использовать кешированную версию. Возможная проблема может возникнуть при выпуске новой версии сервера: все клиенты (сотни) потенциально могут загрузить новую версию одновременно. Чтобы предотвратить эту проблему, я хотел бы изучить возможность использования веб-прокси в качестве кеша: первый клиент загружает из Интернета новую версию, другие клиенты загружают версию, кэшированную на веб-прокси. Возможно ли это? У меня есть некоторые сомнения в основном из-за того, что из панели управления Java → Средство просмотра кеша Java (Java 6 в Win XP) я вижу 1 приложение (40 МБ) в `` представлении приложения '', некоторые JAR-файлы при переключении в «Просмотр ресурсов», но когда я перехожу к месту на диске, на котором должен физически размещаться кеш, я вижу множество папок (большинство из них пустые) и файлы .idx (без следов JAR). Идея состоит в том, чтобы указать веб-прокси (Forefront TMG) ​​кэшировать только набор файлов (какие? С какими расширениями?), Поступающие с сайта провайдера. Я прилагаю очищенную версию файла JNLP с опцией кэширования, но я полагаю, что они не имеют отношения к моему вопросу, поскольку они касаются только опции кеширования на КЛИЕНТЕ (верно?)

<jnlp spec="1.0+" codebase="http://somesite.com/myapp/" href="http://somesite.com/myapp/WebStart.jnlp">
  <information>
    <title>....</title>
    <vendor>....</vendor>
    <homepage href="http://somesite.com"/>
    <description>....</description>
    <icon href="http://....gif" kind="default"/>
    <shortcut online="true" install="false">
      <desktop/>
      <menu submenu="...."/>
    </shortcut>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <java initial-heap-size="20971520" max-heap-size="536870912" java-vm-args="-XX:MaxPermSize=128m" href="http://java.sun.com/products/autodl/j2se" version="1.6.0_11+"/>
    <jar href="http://......jar" download="eager" main="false"/>
     ... some other JARs...
  </resources>
  <application-desc main-class="com.package.....">
    <argument>-showSavePwd</argument>
    <argument>-forcedHttpsLoginPort:443</argument>
    <argument>-availableLanguages:en;fr;de;es;ja</argument>
    <argument>-forceCountryByLanguage:false</argument>
  </application-desc>
</jnlp>

Спасибо


person Diego Pascotto    schedule 14.10.2014    source источник


Ответы (1)


Я использовал CloudFront для нашей CDN, и он хорошо работает почти 2 года (более 20 обновлений приложений). Я бы настроил ваш JNLP следующим образом:

 ...
  <resources>
    <java initial-heap-size="20971520" max-heap-size="536870912" java-vm-args="-XX:MaxPermSize=128m" href="http://java.sun.com/products/autodl/j2se" version="1.6.0_11+"/>
    <jar href="http://xyz.cloudfront.net/path/some.jar" download="eager" main="false" version="123"/>
     ... some other JARs...
  </resources>
...

http://xyz.cloudfront.net/ настроен так, что источник указывает на http://somesite.com/.

После этого CloudFront настроен на кэширование строк запроса, что позволяет механизму версий работать. После этой начальной настройки мне не пришлось ничего делать, чтобы она работала.

person WillieT    schedule 12.08.2015