2014-10-14 11 views
0

인터넷을 통해 SaaS 스키마 (클라우드)에 제공되는 리치 인터넷 애플리케이션이 있습니다. Java Web Start를 통해 애플리케이션이 배포됩니다. 사용자는 공급자 사이트 (http://somesite.com/myapp/myapp.jnlp)에 대한 JNLP 파일을 가리키는 링크를 클릭합니다. 응용 프로그램이 다운로드되고 로컬 캐시됩니다 (클라이언트의 Java 제어판에서 응용 프로그램이 약 40MB라는 것을 알 수 있습니다). 서버 측에서 변경 사항이 발생하지 않으면 클라이언트는 캐시 된 버전을 사용합니다. 새 서버 버전이 출시되면 가능한 문제가 발생할 수 있습니다. 즉 모든 클라이언트 (수백 명)가 동시에 새 버전을 다운로드 할 수 있습니다. 이 문제를 방지하기 위해 웹 프록시를 캐시로 사용할 가능성을 탐구하고 싶습니다. 첫 번째 클라이언트가 인터넷에서 새 버전을 다운로드하고 다른 클라이언트는 웹 프록시에 캐시 된 버전을 다운로드합니다. 이것이 가능합니까? Java 컨트롤 패널에서 Java 캐시 뷰어 (Win XP의 Java 6)를 볼 때 '애플리케이션보기'에서 1 개의 애플리케이션 (40 MB)을 볼 수 있으며, 일부 JAR은 전환 할 때 '리소스 뷰'로 이동하지만 실제로 캐시를 호스팅하는 디스크 위치로 이동하면 많은 폴더 (대부분 비어 있음)와 .idx 파일 (JAR 추적 없음)이 표시됩니다. 웹 프록시 (Forefront TMG)가 공급자 사이트에서 오는 일련의 파일 (확장명? 확장명?) 만 캐시하도록하는 것이 아이디어입니다. 나는 캐싱 옵션을 JNLP 파일 적힌 정리 된 버전을 첨부,하지만 나는 그들이 내 질문에 관련이없는 생각들이 클라이언트의 캐싱 옵션의 거래 (오른쪽?)Java Web Start 및 웹 프록시 캐싱

<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> 

감사

답변

0
이후

저는 CDN에 CloudFront를 사용했으며 거의 ​​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는 버전 메커니즘을 작동시키는 쿼리 문자열을 캐시하도록 구성됩니다. 이 초기 구성 후에는 계속 실행하기 위해 아무 것도 할 필요가 없었습니다.