Как Вы устанавливаете заголовки кэша в Spring MVC?

Я не знаю, сказал ли я, что они - когда-либо действительно благо, но я думаю, что они могут, конечно, быть ценными. Я работал над системой в течение нескольких лет в страховой индустрии, где механизм правил использовался вполне успешно, чтобы позволить бизнес-пользователям создавать правила, которые определили, какие политики были законны, в зависимости от состояния.

, Например, если у Вас должна была быть доплата в определенных состояниях или определенных комбинациях франшизы и доплаты, не были позволены, или из-за соображений продукта, или потому что это было просто недопустимо из-за государственного закона.

количество состояний, что компания, управляемая в, наряду с постоянным изменением в правилах (ежеквартально), сделала бы это головокружительной практикой кодирования. Что еще более важно, это не находится в экспертных знаниях программиста. Это добавляет дополнительную бессмысленную коммуникацию, где конечный пользователь описывает правило, которое будет помещено в действительности в программиста, который не является экспертом по страховой индустрии как, они.

Разработанный правильно, механизм правил может все еще включить систему организации технологических процессов, которая допускает хорошее тестирование. В этом случае правила были сохранены в базе данных, и были базы данных QA и PROD. Таким образом, BA мог протестировать их правила в QA и затем продвинуть их для ПОДТАЛКИВАНИЯ.

Как с чем-либо, обычно о реализации а не фактической технике.

60
задан D. Wroblewski 1 September 2009 в 14:56
поделиться

4 ответа

org.springframework.web.servlet.support.WebContentGenerator , который является базовым классом для всех контроллеров Spring, имеет довольно много методов, работающих с заголовками кеша:

/* Set whether to use the HTTP 1.1 cache-control header. Default is "true".
 * <p>Note: Cache headers will only get applied if caching is enabled
 * (or explicitly prevented) for the current request. */
public final void setUseCacheControlHeader();

/* Return whether the HTTP 1.1 cache-control header is used. */
public final boolean isUseCacheControlHeader();

/* Set whether to use the HTTP 1.1 cache-control header value "no-store"
 * when preventing caching. Default is "true". */
public final void setUseCacheControlNoStore(boolean useCacheControlNoStore);

/* Cache content for the given number of seconds. Default is -1,
 * indicating no generation of cache-related headers.
 * Only if this is set to 0 (no cache) or a positive value (cache for
 * this many seconds) will this class generate cache headers.
 * The headers can be overwritten by subclasses, before content is generated. */
public final void setCacheSeconds(int seconds);

Они могут либо вызываться в вашем контроллере перед генерацией контента или указываться как свойства bean-компонента в контексте Spring.

19
ответ дан 24 November 2019 в 17:35
поделиться

Вы можете использовать обработчик-перехватчик и использовать предоставленный им метод postHandle:

http://static.springsource.org/spring/docs /2.0.x/api/org/springframework/web/servlet/HandlerInterceptor.html

postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 

, затем просто добавьте в метод заголовок, как показано ниже:

response.setHeader("Cache-Control", "no-cache");
10
ответ дан 24 November 2019 в 17:35
поделиться

Ответ довольно прост:

@Controller
public class EmployeeController {
@RequestMapping(value = "/find/employer/{employerId}", method = RequestMethod.GET) public List getEmployees(@PathVariable("employerId") Long employerId, final HttpServletResponse response) { response.setHeader("Cache-Control", "no-cache"); return employeeService.findEmployeesForEmployer(employerId); }
}
Код выше показывает именно то, чего вы хотите добиться. Вам нужно сделать две вещи. Добавить "final HttpServletResponse response" в качестве параметра. А затем установите для заголовка Cache-Control значение no-cache.
30
ответ дан 24 November 2019 в 17:35
поделиться

Можно расширить AnnotationMethodHandlerAdapter для поиска пользовательской аннотации управления кэшем и установить http-заголовки соответствующим образом.

1
ответ дан 24 November 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: