|
| 1 | +--- |
| 2 | +title: "Cache: add() method" |
| 3 | +short-title: add() |
| 4 | +slug: Web/API/Cache/add |
| 5 | +l10n: |
| 6 | + sourceCommit: 2ef36a6d6f380e79c88bc3a80033e1d3c4629994 |
| 7 | +--- |
| 8 | + |
| 9 | +{{APIRef("Service Workers API")}}{{SecureContext_Header}}{{AvailableInWorkers}} |
| 10 | + |
| 11 | +{{domxref("Cache")}} 인터페이스의 **`add()`** 메서드는 URL을 받아서 해당 리소스를 가져온 후, 결과로 받은 응답 객체를 지정된 캐시에 추가합니다. |
| 12 | + |
| 13 | +`add()` 메서드는 기능적으로 다음과 동일합니다: |
| 14 | + |
| 15 | +```js |
| 16 | +fetch(url).then((response) => { |
| 17 | + if (!response.ok) { |
| 18 | + throw new TypeError("bad response status"); |
| 19 | + } |
| 20 | + return cache.put(url, response); |
| 21 | +}); |
| 22 | +``` |
| 23 | + |
| 24 | +더 복잡한 작업의 경우 {{domxref("Cache.put","Cache.put()")}}을 직접 사용해야 합니다. |
| 25 | + |
| 26 | +> [!NOTE] |
| 27 | +> `add()`는 요청과 일치하는 캐시에 이전에 저장된 키/값 쌍을 덮어씁니다. |
| 28 | +
|
| 29 | +## 구문 |
| 30 | + |
| 31 | +```js-nolint |
| 32 | +add(request) |
| 33 | +``` |
| 34 | + |
| 35 | +### 매개변수 |
| 36 | + |
| 37 | +- `request` |
| 38 | + - : 캐시에 추가하려는 리소스에 대한 요청입니다. {{domxref("Request")}} 객체 또는 URL이 될 수 있습니다. |
| 39 | + |
| 40 | + 이 매개변수는 {{domxref("Request.Request()", "Request()")}} 생성자의 매개변수로 사용되므로, URL은 해당 생성자와 동일한 규칙을 따릅니다. 특히, URL은 기본 URL에 대한 상대 경로일 수 있으며, 기본 URL은 Window 컨텍스트에서는 문서의 {{domxref("Node.baseURI", "baseURI")}}이고, Worker 컨텍스트에서는 {{domxref("WorkerGlobalScope.location")}}입니다. |
| 41 | + |
| 42 | +### 반환 값 |
| 43 | + |
| 44 | +`undefined`로 이행하는 {{jsxref("Promise")}}입니다. |
| 45 | + |
| 46 | +### 예외 |
| 47 | + |
| 48 | +- {{jsxref("TypeError")}} |
| 49 | + - : URL 스킴이 `http` 또는 `https`가 아닙니다. |
| 50 | + |
| 51 | + Response 상태가 200번대가 아닙니다(즉, 성공적인 응답이 아닙니다). 이는 요청이 성공적으로 반환되지 않은 경우뿐만 아니라, 요청이 교차 출처 no-cors 요청인 경우에도 발생합니다(이 경우 보고된 상태는 항상 0입니다). |
| 52 | + |
| 53 | +## 예제 |
| 54 | + |
| 55 | +이 코드 블록은 {{domxref("InstallEvent")}}가 발생할 때까지 기다린 다음, {{domxref("ExtendableEvent.waitUntil","waitUntil()")}}을 호출하여 앱의 설치 프로세스를 처리합니다. 이는 {{domxref("CacheStorage.open")}}을 호출하여 새 캐시를 생성한 다음, `Cache.add`를 사용하여 자산을 추가하는 것으로 구성됩니다. |
| 56 | + |
| 57 | +```js |
| 58 | +this.addEventListener("install", (event) => { |
| 59 | + event.waitUntil(caches.open("v1").then((cache) => cache.add("/index.html"))); |
| 60 | +}); |
| 61 | +``` |
| 62 | + |
| 63 | +## 명세 |
| 64 | + |
| 65 | +{{Specifications}} |
| 66 | + |
| 67 | +## 브라우저 호환성 |
| 68 | + |
| 69 | +{{Compat}} |
| 70 | + |
| 71 | +## 같이 보기 |
| 72 | + |
| 73 | +- [Service Worker 사용하기](/ko/docs/Web/API/Service_Worker_API/Using_Service_Workers) |
| 74 | +- {{domxref("Cache")}} |
| 75 | +- {{domxref("Window.caches")}}와 {{domxref("WorkerGlobalScope.caches")}} |
0 commit comments