2016-08-20 7 views
0

내 OSX 앱이 웹보기 내에서 웹 페이지를로드하려고 시도하고 있습니다. 나는 앱의 연속적인 출시 사이에 페이지의 빠른 laoding을 위해 웹 페이지를 캐싱 할 것을 요구한다.OSX 앱에서 NSURLRequest를 사용하여 페이지를로드 할 때 큰 크기의 링크 된 리소스가 캐시되지 않습니다.

페이지에 링크 된 모든 리소스 파일 (js/css/images)은 3MB 크기의 하나의 js 파일을 제외하고 캐시됩니다. 이 사실을 cache.db 파일에서 확인했으며이 특정 파일과 관련된 항목이 관련 테이블에 없습니다. 캐시 정책에 대한 매개 변수를 변경 요청

  • 위한 타임 아웃 시간을 증가 캐시 메모리 용량
  • 증가

    • 포함

      내가 시도 많은 것을, 확인 된 해결 방법이다

    명시 적으로 js 파일을 요청하고 강제로 캐시에 저장하십시오.

    [[NSURLCache sharedURLCache] storeCachedResponse:cachedURLResponse forRequest:request]; 
    

    이렇게하면 파일이 올바르게 캐시되고 이후에 실행될 때 네트워크 활동이 최소화됩니다. 이것은 분명히 해결책이 아닙니다.

    NSURLCache 문서에서 크기와 관련된 참조를 찾지 못했기 때문에 파일 크기가 중요한지 확실하지 않습니다. 또 다른 관찰은 링크 된 리소스가로드되기 전에 'didFinishLoadForFrame'대리자가 호출된다는 것입니다.

    이 점에서 어떤 도움을 주셔서 감사합니다,

    감사합니다,

    Jimesh

  • 답변

    0

    예, 파일 크기 문제. 캐시의 표준 동작은 캐시 크기의 5 ~ 10 %보다 큰 항목을 저장하지 않는 것입니다. 캐시 크기를 캐싱중인 크기보다 적어도 두 배 이상 커지면 "정상적으로 작동 할 것"입니다.

    작동하지 않는 경우 해당 파일에 대해 서버에서 다시 보내는 캐시 정책이 캐싱을 허용하지 않음을 나타냅니다.

    그리고 문제가되지 않는다면 캐시되지 않은 파일의 URL로 질문을 업데이트하고 캐시 크기 구성 방법을 보여주는 코드 스 니펫을 업데이트하십시오.