>  기사  >  위챗 애플릿  >  WeChat 개발 소개 (9) 로컬 캐시

WeChat 개발 소개 (9) 로컬 캐시

零下一度
零下一度원래의
2017-05-24 09:55:261905검색

현재 WeChat은 각 미니 프로그램에 10M의 로컬 캐시 공간을 제공합니다(맙소사, 너무 크네요)

  1. 로컬 캐시를 사용하면 미니 프로그램에서 다음 작업을 수행할 수 있습니다.

  • 오프라인 애플리케이션(네트워크 없이 캐시된 데이터를 작동하는 것으로 테스트됨)

  • 부드러운 사용자 경험

  • 네트워크 요청을 줄이고 서버 리소스를 절약

  • 캐시에 적합한 데이터:

    • 핫 데이터

    • 정적 데이터(사용자 데이터, 서버 인증 ID 등)

    • 네트워크 주소(사진, 파일 등의 네트워크 주소)

    • 페이징 목록 데이터 및 세부 콘텐츠

  • 일반 캐시 시스템은 키-값 쌍을 사용하여 을 수행하여 데이터 삽입 및 읽기를 완료합니다. key에 대한 해시 알고리즘, 고유한 값이 얻어지고 을 쿼리할 때 알고리즘 공간이 해시된 키를 기반으로 쿼리됩니다. 복잡도 O(1);

  • 미니 프로그램의 로컬 캐시 구현은 위의 방법을 기반으로 합니다. 그러나 데이터가 ROM에 저장되는지, 아니면 지속성을 위해 RAM에 저장되는지는 아직 연구 대상으로 남아 있습니다.

  • 로컬 캐시 데이터 작업에는 동기식과 비동기식의 두 가지 유형이 있습니다. 동기화 방법에는 성공적인 데이터 처리 후 작업을 나타내는 성공 콜백 함수 가 있습니다. 다음은 미니 프로그램에서 제공하는 로컬 캐시 동작 인터페이스입니다.

  • 操作 异步方法 同步方法
    插入 wx.setStorage wx.setStorageSync
    读取 wx.getStorage wx.getStorageSync
    删除 wx.removeStorage wx.removeStorageSync
    清空 wx.clearStorage wx.clearStorageSync
    获取缓存信息 wx.getStorageInfo wx.getStorageInfoSync

    Sync로 끝나는 모든 방법은 동기화 방법입니다. 동기 메서드와 비동기 메서드의 차이점은 다음과 같습니다.

    • 동기 메서드는 동기 메서드가 반환될 때까지 현재 작업을 차단합니다.

    • 비동기 방식은 현재 작업을 차단하지 않습니다.

    6. 다음은 동기화와 비동기의 차이점을 설명하기 위해 캐시를 삽입하는 두 가지 방법입니다.

    1. 비동기 메서드를 먼저 호출한 다음 동기 메서드를 호출합니다. 🎜>

     Page({save: function(e){console.log('开始保存')wx.setStorage({
       key: 'key1',
       data: 'data1',
       success: function(res){
        console.log('异步保存成功')  }})wx.setStorageSync('key2', 'data2')console.log('同步保存成功')  }})

    실행 결과:


    WeChat 개발 소개 (9) 로컬 캐시

    비동기식 메서드보다 먼저 동기식 메서드가 성공적으로 저장되는 것을 볼 수 있어 비동기식 메서드가 현재 작업을 차단하지 않음을 나타냅니다.

    1. 먼저 동기식 메서드를 호출한 다음 비동기식 메서드

    Page({save: function(e){console.log('开始保存')wx.setStorageSync('key2', 'data2')console.log('同步保存成功')wx.setStorage({
      key: 'key1',
      data: 'data1',
      success: function(res){
        console.log('异步保存成功')  }})  }})

    실행 결과:


    WeChat 개발 소개 (9) 로컬 캐시

    비동기식 메서드만 호출할 수 있음을 알 수 있습니다. 동기 메서드가 실행될 때까지 기다립니다. 성공한 경우에만 실행됩니다.

    캐시

    API는 로컬 캐시 정보를 얻기 위한 인터페이스 wx.getStorageInfo를 제공합니다. 이를 통해 개발자는 캐시 시간을 추가하고 덮어쓰지 않고 삽입하는 등 기존 API를 다시 캡슐화할 수 있습니다. 삭제, 현재 캐시 크기 결정 등

    마지막은 캐시 격리 수준의 문제입니다.

    1. 적어도 논리적 저장 측면에서는 동일한 휴대폰, 다른 미니 프로그램 애플리케이션은 확실히 애플리케이션 수준 격리를 충족하는 공유 캐시가 아닙니다.

    2. QR 코드를 스캔하면 동일한 휴대폰, 동일한 애플릿을 다른 WeChat 사용자가 사용할 수 있습니다. 현재 테스트 조건에서는 캐시가 공유되지 않습니다. 사용자 수준 격리.

    3. 동일한 휴대폰, 동일한 미니 프로그램, 동일한 위챗 사용자가 코드를 두 번 스캔하여 테스트한 결과 공유 캐시입니다.

    4. 동일한 휴대폰, 동일한 애플릿을 다른 WeChat 사용자가 전환할 수 있습니다(각각 코드를 두 번 스캔). 테스트 후 동일한 사용자가 캐시를 공유하지만 다른 사용자는 공유합니다. 캐시를 공유하지 마세요.

    현재 실제 시스템

    디버깅 조건에서 각 미니 프로그램 코드 스캐닝 사용자에게 10M 로컬 캐시가 할당되는 것으로 추론할 수 있습니다. 위 내용은 실제 기기에서 직접 테스트한 결과이며, 결과는 완전히 정확하지 않을 수 있으며 참고용일 뿐입니다.

    [관련 추천]

    1.

    위챗 공개계정 플랫폼 소스코드 다운로드

    PigCms 마이크로 전자상거래 시스템 운영 버전 (독립 위챗 매장몰 + 3단계 유통 시스템)

    3.

    WeChat People Network v3.4.5 Advanced Business Edition WeChat Rubik's Cube 소스 코드

    위 내용은 WeChat 개발 소개 (9) 로컬 캐시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.