У меня есть приложение 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();
}