2017-01-30 2 views
0

У меня есть приложение JWS, которое кэширует несколько разных типов ресурсов. Однако я не хочу кэшировать изображения .svg. Похоже, что фреймворк не соблюдает настройки HTTP-заголовков кеша на стороне сервера, которые я установил.Предотвращение кэширования изображений .svg на сервере приложений

Мне было интересно, есть ли другой способ загрузки изображений .svg без кеширования. Я открыт для размещения решения в моем методе loadSVGDocument(), но мой код в настоящее время построен на Apache Batik для загрузки файлов .svg. Есть ли решение пройти InputStream с флагом noCache в библиотеке Batik, аналогично тому, что указано ниже: DocumentBuilderFactory?

URL url = new URL(fileLocation); 
URLConnection connection = url.openConnection(); 
// Prevent JavaWebStart from returning cached copy. 
connection.setUseCaches(false); 

// Now fetch the content, e.g. 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(connection.getInputStream()); 

Вот мой текущий loadSVGDocument() метод, который использует несколько Apache Батик поля:

public void loadSVGDocument(final String url) 
{ 
    System.out.println("THE SVG URL: " + url); 
    String oldURI = null; 
    if (svgDocument != null) 
    { 
     oldURI = svgDocument.getURL(); 
    } 

    final ParsedURL newURI = new ParsedURL(oldURI, url); 
    String theUrl = newURI.toString(); 
    fragmentIdentifier = newURI.getRef(); 

    loader = new DocumentLoader(userAgent); 
    nextDocumentLoader = new SVGDocumentLoader(theUrl, loader); 
    nextDocumentLoader.setPriority(Thread.NORM_PRIORITY); 

    Iterator it = svgDocumentLoaderListeners.iterator(); 
    while (it.hasNext()) 
    { 
     nextDocumentLoader 
      .addSVGDocumentLoaderListener((SVGDocumentLoaderListener) it.next()); 
    } 

    documentLoader = nextDocumentLoader; 
    nextDocumentLoader = null; 
    documentLoader.run(); 
} 

ответ

0

Для тех, кто заинтересован, я обнаружил, что я могу назвать Батик-х

DocumentLoader.loadDocument(URL url, InputStream is)

с setUseCaches флаг как false. Это не только загружает изображение, но также удаляет его из кэша. Хотя это не лучшее решение в том смысле, что JWS было бы хорошо почитать мои HTTP-заголовки, эта работа достаточно хороша.

Смежные вопросы