# Оптимизация сети ## Навигация - [🏠 Главная страница курса](../../../README.md) - [📚 Модуль 10](../README.md) --- ## Оптимизация сети ### 1. Connection Pooling ```java // Оптимизация HTTP соединений @Configuration public class HttpClientConfig { @Bean public RestTemplate restTemplate() { HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); // Настройка пула соединений PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(100); connectionManager.setDefaultMaxPerRoute(20); CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(connectionManager) .setDefaultRequestConfig(RequestConfig.custom() .setConnectTimeout(5000) .setSocketTimeout(10000) .build()) .build(); factory.setHttpClient(httpClient); return new RestTemplate(factory); } } ``` ### 2. Compression ```java // Сжатие HTTP ответов @Configuration public class CompressionConfig { @Bean public FilterRegistrationBean compressionFilter() { FilterRegistrationBean registration = new FilterRegistrationBean<>(); registration.setFilter(new CompressionFilter()); registration.addUrlPatterns("/*"); registration.setName("compressionFilter"); registration.setOrder(1); return registration; } } @Component public class CompressionFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; String acceptEncoding = httpRequest.getHeader("Accept-Encoding"); if (acceptEncoding != null && acceptEncoding.contains("gzip")) { httpResponse.setHeader("Content-Encoding", "gzip"); GzipResponseWrapper gzipResponse = new GzipResponseWrapper(httpResponse); chain.doFilter(request, gzipResponse); gzipResponse.finish(); } else { chain.doFilter(request, response); } } } ``` ### 3. CDN Integration ```java // Интеграция с CDN @Service public class CDNService { @Value("${cdn.base-url}") private String cdnBaseUrl; public String getCDNUrl(String path) { return cdnBaseUrl + "/" + path; } public void uploadToCDN(String path, byte[] content) { // Загрузка контента в CDN // Реализация зависит от выбранного CDN провайдера } public void invalidateCDNCache(String path) { // Инвалидация кэша CDN // Реализация зависит от выбранного CDN провайдера } } ```