UpdateCacheInterceptor.java 1.34 KB
package com.jflyfox.component.interceptor;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jflyfox.modules.admin.comment.CommentService;
import com.jflyfox.modules.admin.folder.FolderService;
import com.jflyfox.modules.front.service.FrontCacheService;
import com.jflyfox.modules.front.service.FrontImageService;
import com.jflyfox.modules.front.service.FrontVideoService;
import com.jflyfox.util.Config;

/**
 * 缓存更新拦截器
 * 
 * @author flyfox 2015-9-21
 */
public class UpdateCacheInterceptor implements Interceptor {

	/**
	 * 缓存更新时间
	 */
	public static final long UPDATE_TIME = Config.getToLong("CMS.UPDATE_TIME");

	public static long lastUpdateTime = System.currentTimeMillis();

	public void intercept(Invocation ai) {

		// 如果想让体验更好,可以调用一遍所有缓存方法(比较麻烦)
		long now = System.currentTimeMillis();
		if (UPDATE_TIME > 0 && now - lastUpdateTime > UPDATE_TIME) {
			// 更新目录缓存
			new FolderService().updateCache();
			// 清除回复数缓存
			new CommentService().clearCache();
			// 清除所有前台缓存
			new FrontCacheService().clearCache();
			// 清除前台图片缓存
			new FrontImageService().clearCache();
			// 清除前台视频缓存
			new FrontVideoService().clearCache();

			lastUpdateTime = now;
		}
		ai.invoke();

	}
}