缓存功能优化, 修改设置后自动修改缓存, 且缓存未完成, 搜索功能暂时禁用.

This commit is contained in:
zhaojun1998
2020-01-02 18:17:11 +08:00
parent 2a367afc37
commit de947e510c
6 changed files with 35 additions and 7 deletions

View File

@@ -19,9 +19,13 @@ public class StorageStrategyInitCheckAspect {
public void logStart() {
SystemConfigService systemConfigService = SpringContextHolder.getBean(SystemConfigService.class);
AbstractFileService currentFileService = systemConfigService.getCurrentFileService();
if (currentFileService == null || !currentFileService.getIsInitialized()) {
if (currentFileService == null) {
throw new StorageStrategyUninitializedException("存储策略尚未初始化, 请联系管理员!");
}
if (!currentFileService.getIsInitialized()) {
throw new StorageStrategyUninitializedException("存储策略异常, 请联系管理员!");
}
}
}

View File

@@ -59,7 +59,7 @@ public class AdminController {
* 更新系统配置
*/
@PostMapping("/config")
public ResultBean updateConfig(SystemConfigDTO systemConfigDTO) {
public ResultBean updateConfig(SystemConfigDTO systemConfigDTO) throws Exception {
StorageTypeEnum currentStorageStrategy = systemConfigService.getCurrentStorageStrategy();
systemConfigDTO.setId(1);
@@ -82,7 +82,7 @@ public class AdminController {
/**
* 清理当前启用的存储引擎的缓存
*/
@GetMapping("/clear-cache")
@PostMapping("/clear-cache")
public ResultBean clearCache() {
AbstractFileService fileService = systemConfigService.getCurrentFileService();
fileService.clearCache();

View File

@@ -11,6 +11,7 @@ import im.zhaojun.common.model.dto.SiteConfigDTO;
import im.zhaojun.common.model.dto.SystemConfigDTO;
import im.zhaojun.common.model.enums.StorageTypeEnum;
import im.zhaojun.common.service.AbstractFileService;
import im.zhaojun.common.service.FileAsyncCacheService;
import im.zhaojun.common.service.StorageConfigService;
import im.zhaojun.common.service.SystemConfigService;
import im.zhaojun.common.service.SystemService;
@@ -44,6 +45,9 @@ public class FileController {
@Resource
private StorageConfigService storageConfigService;
@Resource
private FileAsyncCacheService fileAsyncCacheService;
/**
* 滚动加载每页条数.
*/
@@ -133,6 +137,9 @@ public class FileController {
if (!systemConfigDTO.getSearchEnable()) {
throw new SearchDisableException("搜索功能未开启");
}
if (!fileAsyncCacheService.isCacheFinish()) {
throw new SearchDisableException("搜索功能缓存预热中, 请稍后再试");
}
return ResultBean.success(fileService.search(URLUtil.decode(name)));
}

View File

@@ -48,7 +48,7 @@ public class InstallController {
@PostMapping("/install")
@ResponseBody
public ResultBean install(InstallModelDTO installModelDTO) {
public ResultBean install(InstallModelDTO installModelDTO) throws Exception {
SystemConfigDTO systemConfigDTO = systemConfigService.getSystemConfig();
if (systemConfigDTO.getStorageStrategy() != null) {

View File

@@ -2,8 +2,7 @@ package im.zhaojun.common.service;
import im.zhaojun.common.config.StorageTypeFactory;
import im.zhaojun.common.model.enums.StorageTypeEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -12,10 +11,11 @@ import javax.annotation.Resource;
/**
* @author zhaojun
*/
@Slf4j
@Service
public class FileAsyncCacheService {
private static final Logger log = LoggerFactory.getLogger(FileAsyncCacheService.class);
private boolean cacheFinish;
@Resource
private SystemConfigService systemConfigService;
@@ -42,5 +42,14 @@ public class FileAsyncCacheService {
}
long endTime = System.currentTimeMillis();
log.info("缓存 {} 所有文件结束, 用时: {} 秒", storageStrategy.getDescription(), ( (endTime - startTime) / 1000 ));
cacheFinish = true;
}
public boolean isCacheFinish() {
return cacheFinish;
}
public void setCacheFinish(boolean cacheFinish) {
this.cacheFinish = cacheFinish;
}
}

View File

@@ -87,6 +87,9 @@ public class SystemConfigService {
searchIgnoreCaseSystemConfig.setValue(systemConfigDTO.getSearchIgnoreCase() ? "true" : "false");
systemConfigList.add(searchIgnoreCaseSystemConfig);
boolean oldEnableCache = getEnableCache();
Boolean curEnableCache = systemConfigDTO.getEnableCache();
SystemConfig enableCacheSystemConfig = systemConfigRepository.findByKey(SystemConfigConstant.ENABLE_CACHE);
enableCacheSystemConfig.setValue(systemConfigDTO.getEnableCache() ? "true" : "false");
systemConfigList.add(enableCacheSystemConfig);
@@ -108,6 +111,11 @@ public class SystemConfigService {
}
systemConfigRepository.saveAll(systemConfigList);
if (!oldEnableCache && curEnableCache) {
log.debug("检测到开启了缓存, 开启预热缓存");
fileAsyncCacheService.cacheGlobalFile();
}
}
public void updateUsernameAndPwd(String username, String password) {