springmvc + freemarker 开发环境 缓存设置

来源:互联网 发布:elementary os ubuntu 编辑:程序博客网 时间:2024/06/06 12:47

通过阅读源码搞定了

  1. 先设置springmvc的缓存控制。这是最高优先级的缓存控制。一旦springmvc发现没有缓存开启,就会进行cache,如果发现缓存没开启,则会每次生成一个view(通过调用freemarker的方法来进行)。
  2. 再设置freemakre的缓存控制。freemakre通过一个时间长度来控制缓存
  3. 在上面两步完成之后,一般来说就可以了。但是还有一个问题是,web访问的是target目录下的classpath和WEB-INFO目录,而我们开发环境修改的模板文件不是target目录下。这就要求IntelliJ要有热部署功能,也就是在修改文件后,能自动更新target目录下的文件数据。

springmvc 设置解析器 缓存设置

<bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    <property name="suffix" value=".ftl"/>    <property name="order" value="0"/>    <property name="contentType" value="text/html;charset=UTF-8"/>    <!-- 此变量值为pageContext.request, 页面使用方法:rc.contextPath -->    <property name="requestContextAttribute" value="rc"/>    <property name="cache" value="false"/></bean>

这里关键是让 cache设置为 false.

开发环境下为false, 线上环境是true, 避免所有缓存

freemarker 缓存设置

<!-- 配置FreeMarkerConfigurer --><bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>    <property name="freemarkerSettings">        <props>            <prop key="template_update_delay">0</prop>        </props>    </property></bean>

这里关键是设置 template_update_delay 为0 ,因此每次在刷新 free marker页面时,均会进行修改时间 的校验,判断是否应该重新载入。

0 0
原创粉丝点击