프런트 엔드 브라우저에서는 첫 번째 요청 시 일부 데이터(예: 데이터 사전의 데이터)를 js 객체에서 검색하고 저장할 수 있으므로 필요할 때마다 서버에 요청할 필요가 없습니다. 미래. 드롭다운 상자를 채우기 위해 데이터 사전을 많이 사용하는 페이지의 경우 이 접근 방식을 사용하면 서버 방문을 크게 줄일 수 있습니다. 이 방법은 iframe을 사용하는 프레임에 특히 효과적입니다.
구체적인 구현 아이디어 및 방법:
cache.js 파일 만들기:
1. 프런트 엔드 페이지, 프런트 엔드 캐시에서 한 번에 가져와야 하는 데이터를 정의하고 개체를 정의합니다. 다음 데이터를 저장하세요:
/** * 定义需要在用户登录的时候获取到本地的数据字典类别 */ var clsCodes = {"clsCodes" : ["BOOL", "STATUS", "USER_TYPE", "REPORT_STATUS" ] }; /** * 获取数据字典到本地 */ var dicts;
2 프런트 엔드 페이지에서 백엔드 인터페이스를 호출하여 데이터를 얻는 함수를 정의한 다음 이를 로컬 캐시 개체에 저장합니다(dicts). ).
function getDicts() { $.post(getContextPath() + "/api/sys/getDictList", clsCodes, function(resultBean, status, xhRequest) { if (resultBean.data != undefined) { dicts = resultBean.data; } }, 'json'); }
데이터를 한 번에 가져와서 메인 페이지가 로드될 때 캐시하려면 이 메서드를 호출하세요. 이런 방식으로 나중에 동일한 데이터가 필요할 경우 로컬 개체 사전에서 직접 가져올 수 있습니다.
백엔드 컨트롤러:
3. 프런트엔드 요청에 따라 데이터베이스를 쿼리(또는 아래 예와 같이 서버 캐시를 쿼리)하여 데이터를 가져와 프런트엔드로 반환하는 인터페이스를 정의합니다.
/** * 根据多个分类编号获取多个字典集合 * @param clsCodes * @return {{"clsCode" : {"code1":"name1,"code2":"name2"...}}, ...} */ @SuppressWarnings({ "unchecked", "rawtypes" }) @ResponseBody @RequestMapping("getDictList") public ResultBean getDictList(@RequestParam(value = "clsCodes[]", required = true) String[] clsCodes) { ResultBean rb = new ResultBean(); Map<String, Map<String, String>> dictCache = (Map<String, Map<String, String>>) CacheManager.getInstance().get(CacheConstants.DICT); Map dictMap = new LinkedHashMap<>(); //使用LinkedHashMap保证顺序 if(dictCache != null){ for(String clsCode: clsCodes){ dictMap.put(clsCode, dictCache.get(clsCode)); } }else{ rb.setMessage("缓存中拿不到字典信息!"); rb.setSuccess(false); } rb.setData(dictMap); return rb; }
관련 권장 사항:
프런트엔드용으로 작성된 http 캐싱에 대한 자세한 설명
위 내용은 JavaScript에서 프런트 엔드 캐싱을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!