์คํ๋ผ์ธ ์ง์์ ๋งค์ฐ ์ ์ฉํ๋ฉฐ ์ต์ PWA๋ฅผ ๋ง๋๋ ๋ฐ ์ค์ํฉ๋๋ค. HTML ๋งค๋ํ์คํธ์ ํจ๊ป ์น์ฌ์ดํธ์ ๊ธฐ๋ณธ ์ฑ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ํน์ง์ด ์์ต๋๋ค.
์คํ๋ผ์ธ ์ง์: ์จ๋ผ์ธ ์ํ์์ ์ฌ์ดํธ๊ฐ ๋ก๋๋ ๊ฒฝ์ฐ ์คํ๋ผ์ธ ์ํ์์๋ ์ฌ์ดํธ๋ฅผ ํ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๊ฒ์ ๊ตฌํํ๊ธฐ ๊ฐ์ฅ ์ฌ์ด ๊ธฐ๋ฅ์ด์ด์ผ ํฉ๋๋ค.
์คํ๋ผ์ธ ์ฐ์ ์ง์: ๋ธ๋ผ์ฐ์ ์ ์ฌ์ดํธ๊ฐ ๋ก๋๋์ง ์์๋๋ผ๋ ์คํ๋ผ์ธ ์ํ์์๋ ์ฌ์ดํธ๋ฅผ ์ด ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
webpack-offline
ํ๋ฌ๊ทธ์ธ ๋๋ถ์ ๋ ๋ค ๊ฐ๋ฅํฉ๋๋ค. ์ด์จ๋ React์ Next.js๋ฅผ ๋์์ ๋ฐฐ์ฐ๊ธฐ ๋๋ฌธ์ ์์ง ์๋์ํค์ง ๋ชปํ์ต๋๋ค.
์๋ํ๋๋ก ํ๋ ๋จ๊ณ:
webpack-offline
npm install offline-plugin --save-dev
next.config.js
๋ง๋ค๊ธฐconst OfflinePlugin = require('offline-plugin');
module.exports = {
webpack: (config, { dev }) => {
config.plugins = [
new OfflinePlugin()
];
return config
}
};
์ด๊ฒ์ ๋ด๊ฐ ๋ฌธ์ ๊ฐ ์๋ ๋จ๊ณ์
๋๋ค. ์ต์์ ์์ค ๋ด๋ถ์ componentDidMount
๋ด๋ถ ๊ตฌ์ฑ ์์์์ ์ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ด ๋ฌธ์ ์ ๋ํด ๊ณ์ ์์ ํ๋ผ๋ ์๋ฆผ์ด๊ธฐ๋ ํ๊ณ ๋ ์ ์๊ณ ์๋ ์ฌ๋์ ๋์์ ์์ฒญํ๋ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด์ ๋ํ ์ค๋ช /๋ฌธ์/์์ ์ ํจ๊ป ์ด๊ฒ์ด ์๋ํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
next/prefetch๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค์ง ์๊ธฐ ๋๋ฌธ์ ์์ง ์คํ๋ผ์ธ ๋์์ ํ์ฉํ์ง ์์ต๋๋ค. https://github.com/zeit/next.js/issues/740
Next.js์ ์ง์ ์ ์ธ ๊ด๋ จ์ ์์ง๋ง ์ค์ ๋ก ์คํ๋ผ์ธ์ผ๋ก ์ ์งํ ์ ์๋ ๋ฐ์ดํฐ์ ์์ ์ผ๋ง๋ ๋๋์ง ๊ถ๊ธํฉ๋๋ค(์: ์น ์ฑ์ ๋์์์ด ์๋ ๊ฒฝ์ฐ -- ๋ธ๋ผ์ฐ์ ์ ์๊ฒฉํ ์ ํ์ด ์์ต๋๊น? ๋ชจ๋ฐ์ผ์ ์ด๋ป์ต๋๊น?), ์ฌ์ฉ์๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ํ ์ ์์ต๋๊น? ํ ๊ฐ์ง ๋ถํ์ด ๋์ค์ ์ฌ์ ๋ค์ด๋ก๋ ํ ๋ฑ ๋ด๊ฐ ์ด์ ์ ์ธ๊ธ ํ ์ผ์ ์ฌ๊ธฐ : https://github.com/zeit/next.js/issues/24#issuecomment -258804529 (๋ค์ / ํ๋ฆฌ ํ์น ์ ์ ์ผ์ด์๋ค ).
ํ๋ซํผ, ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ด ์์ต๋๋ค. "๋ธ๋ผ์ฐ์ ์ ์ฅ์ ๋จ์ฉ์"์์ ์ ํ์ ํ ์คํธํ ์ ์์ต๋๋ค. https://demo.agektmr.com/storage/
์คํ๋ผ์ธ ์ ์ฅ ๋ฐ ์บ์ฑ์ ์ํ ํ์คํ๋ ๋ฐฉ๋ฒ์ IndexedDB์ ๋๋ค. ์ด์ iOS Safari(v10)์์๋ ์ง์๋์ง๋ง ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฌ ๊ด๋ฒ์ํ ์ง์์ด ์์ต๋๋ค. http://caniuse.com/#feat =indexeddb
์๋ฅผ ๋ค์ด PouchDB๋ ์ฌ์ ํ Safari์์ IndexedDB ๋์ WebSQL์ ์ฌ์ฉํฉ๋๋ค. https://github.com/pouchdb/pouchdb/issues/5572
localForage์ ๋์ผ: https://github.com/localForage/localForage/issues/604
PouchDB์๋ ๋ฐ์ดํฐ ์ ํ์ ๋ํ ๋ฉ์ง ์์ฝ์ด ์์ต๋๋ค. https://pouchdb.com/faq.html#data_limits (์ฝ๊ฐ ๊ตฌ์)
๊ทธ๋ฆฌ๊ณ ์ด ๋ ์ค๋๋ ๊ธฐ์ฌ์์๋ ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ์ ๊ด๋ จ๋ ์ผ๋ถ ์คํ ๋ฆฌ์ง ์ค๋ฅ ๋ฐ ๊ธฐํ ์ธก๋ฉด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์ธ๊ธํฉ๋๋ค. https://www.html5rocks.com/en/tutorials/offline/quota-research/
์ผ๋ถ ๋ธ๋ผ์ฐ์ ์์ ํ์ฌ ํ ๋น๋์ ์ฟผ๋ฆฌํ๊ณ ๋ ๋ง์ ์๊ตฌ ์ ์ฅ์๋ฅผ ์์ฒญํ ์๋ ์์ต๋๋ค. https://jakearchibald.com/2014/offline-cookbook/#cache -persistence
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋น์ค ์์ปค์ ํจ๊ป ๊ธด ์บ์ ๋ง๋ฃ ๊ฐ๊ณผ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์บ์ ์ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ํํ ๊ฐ ๋ฆฌ์์ค์ ๋ํด http ์์ฒญ์ ํจ์ผ๋ก์จ ์ฌ์ฉ์ ์ง์ ์บ์ฑ์ ์ฝ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ํ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์ ์์ฃผ ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ํ์ ํผํ๊ธฐ ์ํด ๋ค์ํ ์บ์๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ์๋์ผ๋ก ์ญ์ ํ ์ ์๋ ๊ฒ์ ์๋น์ค ์์
์๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์์๋ง ๊ฐ๋ฅํฉ๋๋ค.
https://developer.mozilla.org/en-US/docs/Web/API/Cache
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ ๋ธ๋ผ์ฐ์ ๋ ์ ํ ๋ด์ ์์ ๋๊น์ง ์ ์ฒด ์๋ณธ์ ํ ๋ฒ์ ์ ๊ฑฐํ ์ ์์์ ๊ธฐ์ตํ์ญ์์ค.
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
Addy Osmani์ ๋ ๋ค๋ฅธ ์ ์ฉํ ๊ธฐ์ฌ: https://medium.com/dev-channel/offline-storage-for-progressive-web-apps-70d52695513c#.9vja3t8gp
๋ถ๋ช ํ ์ ์ฅ์ API๋ ์์ ์ค์ ๋๋ค. https://storage.spec.whatwg.org/
์ด๊ฒ์ ์ค์ ๋ก ์๊ตฌ ์ ์ฅ์ ํ์ฉํฉ๋๋ค.
"์ ํต์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ฅ์น์ ์ ์ฅ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์ด๋ฌํ API๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์๊ฐ ๊ฐ์
ํ ์ ์์ด ์์ค๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์๊ตฌ ์์๋ ์ฌ์ฉ์์ ๋์ ์์ด๋ ์ง์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ๋ณด์ฅ์ด ์ฌ์ฉ์์๊ฒ ์ ๊ณต๋ฉ๋๋ค. ์น์ ๋ํ ๊ธฐ๋ณธ ํ๋ซํผ์์ ์ฆ๊ฒผ์ต๋๋ค."
์ฌ์ดํธ/์ฑ์ด ์คํ๋ผ์ธ์์ ์๋ํ๋๋ก ํ๋ IMO์๋ ํ๋ ์์ํฌ๊ฐ ์์ฒด์ ์ผ๋ก ์ทจํด์๋ ์ ๋๋ ๋ง์ ๊ฒฐ์ ์ด ํฌํจ๋ฉ๋๋ค. ๋๋ ์๋น์ค ์์ปค์ ํจ๊ป ์คํ๋ผ์ธ์ผ๋ก ์์ ํ๋ ์ฌ์ดํธ์์ ์์ ๋ฅผ ์์ ํ ๊ฒ์ด์ง๋ง ์ฑ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ธฐ์ ์ด ์์ต๋๋ค.
@impronuncible ๊ฐ์ฌ
์ด๋ค ๊ฒฐ์ ์ ๋งํ๋ ๊ฒ๋๊น? ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ฌธ์ ๋ฅผ ๋ ๊ฐ์ง ์ฃผ์ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
1) ์ ์ ์์ฐ ์บ์ฑ: js, HTML, ์ด๋ฏธ์ง์ ๊ฐ์ด ... ์ด๊ฒ์ /static
์ ์ธํ๊ณ ์ต์ํ ์คํ๋ผ์ธ ํ๋ ์ด๋ฒ์์ ๊ฑฐ์ ์ด๋ฏธ ๊ตฌํ๋์์ผ๋ฉฐ ๋ฐ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. webpack-offline ๋ฐ ์๋น์ค ์์
์๋ฅผ ํตํด ์ ํธ๋๋ ๊ตฌํ ์ค ํ๋์
๋๋ค.
2) ๋ฐ์ดํฐ ์บ์ฑ: ์ํ, ์ฟผ๋ฆฌ, ํ๋ฐ์ฑ ๋ฐ์ดํฐ, .... ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ์ถ์ ํด์ผ ํ๋ฏ๋ก ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํฉ๋๋ค. redux๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ๋ณด์กดํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฌ๋๋ค์ ์ํ๋ ๋๋ก redux์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๊ฒ์ ๋๋ค. ๋๋ ์ฟผ๋ฆฌ ๋ฐ ๋์ฐ๋ณ์ด๋ฅผ ์บ์ฑํ์ฌ ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ์ปค๋ฒํด์ผ ํ๋ GraphQL/Apollo๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@servermeta ๊ทธ๊ฒ์ ๊ทํ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ง ์๊ณ ๊ณต๊ฒฉ์ ์ธ ์บ์ฑ ์ ๋ต ๊ตฌํ์ ๋ง์น๊ฒ ์ต๋๋ค. ์ปค์คํ ์๋ฒ์ https://serviceworke.rs/ ์ ์ ๋ต๋ง ์ฌ์ฉํ๋ฉด
์ฌ๊ธฐ์์ ์๋
@ooade ๊ฐ์ฌํฉ๋๋ค.
์ด์จ๋ ๋๋ ๊ทธ ์ํ๊ฐ ์๋ก ๊ณ ์นจ, ๋ค์๋ก๋ ์ฌ์ด์ ์ง์๋์ง ์๋๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
@ooade ๊ฐ์ฌ
๋ฌธ์ ๋ฅผ ๋๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํ๋ผ์ธ ๋ฐ์ดํฐ ๊ฒ์์ ๊ฐ๋ฐ์์๊ฒ ๋งก๊ฒจ์ผ ํ๊ณ redux ์ํ๋ฅผ ๋ณด์กดํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ํ์ธํ์ญ์์ค:
https://github.com/rt2zz/redux-persist
์ด๋ฅผ ํตํด localstorage์ ์ํ๋ฅผ ์ ์ฅํ ์ ์์ผ๋ฏ๋ก ์๋ก ๊ณ ์นจ, ๋ค์ ๋ก๋, ํญ ๋ฐ ์ธ์ ๊ฐ์ ์ ์ง๋ ์ ์์ต๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ. Google์ ์ฐ๋ฆฌ ํ์ https://github.com/GoogleChrome/sw-precache ๋ฐ https://github.com/GoogleChrome/sw-toolbox ์ ๊ฐ์ React/Webpack ํค๋น์์ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง Service Worker ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Webpack ํ๋ฌ๊ทธ์ธ ํฌํจ)์์ ์์ ํฉ๋๋ค. Lyft, Housing.com, Flipkart ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ดํธ
Next๊ฐ ์คํ๋ผ์ธ ์ง์์ ํ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ๋ช ๊ฐ์ง ์ง์นจ์ ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฝ๋ ๋ถํ ์ด ์ด๋ฏธ ์ํ๋๊ณ ์๋ ๊ฒฝ์ฐ PRPL ๊ณผ ๊ฐ์ ํจํด์
ํด๋น ํ์ด์ง์ ๋ํ ์ฆ๊ฐ์ ์ธ ๋ฐ๋ณต ๋ก๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ ์ธ์๋ V8์ ์ฝ๋ ์บ์ฑ์ ์ผ์ฐ ์ ํํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋ณต ๋ฐฉ๋ฌธ์ ๋ํ ๊ตฌ๋ฌธ ๋ถ์/์ปดํ์ผ ์๊ฐ์ด ์ค๋๋ณด๋ค ๋ฎ์ต๋๋ค.
@rauchg ๊ฐ ํฅ๋ฏธ ์ธ์ณ์ฃผ์ธ์ :)
@addyosmani ์คํ๋ผ์ธ ์ง์์ 2.0 ์์ ํ ์ดํ ์ต์ฐ์ ์์ ์ค ํ๋์ ๋๋ค.
@rauchg 2.0 ์์ ์ ์ธ ์ถ์ ๋ ์ง์ ๋ํ ์์์ด ์์ต๋๊น?
์ฐ๋ฆฌ๋ ๋ณธ๊ฒฉ์ ์ธ ํ๋ก๋์
์ ์์ํ๋ ค๊ณ ํ๋ฉฐ Next.js๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
๋๋ ๋ชจ๋ ์ ํ์ ๊ฒฌ์ , ์ผ / ์ฃผ / ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค ...
์ ๋ง ๊ณ ๋ง์ต๋๋ค!
@Ajar-Ajar 2.0.0์ด ์ค๋ ์ถ์๋์์ต๋๋ค.
@rauchg ๋ ์ฌ๊ธฐ์์ ์ถ์ ํ ์คํ๋ผ์ธ ์ฐ์ ์ง์์ ๋๊น ์๋๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์์ ์ ๋๊น?
@jevakallio์ ์๋ก ์คํ ์์ค redux-offline ๋ ์ฐธ์กฐํ์ญ์์ค. ๋ค์ + redux-offline ์์ ๊ฐ ์์ผ๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๊ฐ ์์ต๋๊น? next.config.js๋ฅผ ์ํํ๊ณ ์คํ๋ผ์ธ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ํ์ง ๋ชปํ์ต๋๋ค. ๋ค์์ ๋ฉ์ง ํ๋ก์ ํธ์ด์ง๋ง ์ด ๊ธฐ๋ฅ(์คํ๋ผ์ธ ์ฐ์ )์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ค๋ฉด ์ ๋ง ์๋ฒฝํ ๊ฒ์ ๋๋ค.
@saulflores95 @ooade ์ NextSimpleStarter ์ ๋ฐฉ์์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค :)
@AugustinLF NextSimpleStarter๋ ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. https://github.com/ooade/NextSimpleStarter/issues/23#issuecomment -294310240
@sedubois ์์ ์ด๊ฒ์ ์ฝ๋ ์ฌ๋์๊ฒ๋ ์ฝ๊ฐ ๊ณผ์ฅ๋ ํํ์ ๋๋ค. ๊ณต์ ํ๊ฒ ๋งํ๋ฉด sw-precache ๋ฐ sw-toolbox๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ถ ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ด ์ฑ์ ์ด ๋ ๊ฐ์ง ๋๊ตฌ๋ก๋ง ์คํ๋ผ์ธ์์ ์๋ํ์ง๋ง ๋ด ์ฑ์ ์ด๊ธฐ ์ํ๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๋ฉด ์ฒ์์ ์ ์ ์ผ๋ก ์ ์ก๋ ๊ฒ ์ด์์ผ๋ก ์ํ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์คํ๋ผ์ธ ์๋ฃจ์ ์ ์ ๊ณตํ์ง ์๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
@timmywil , nextjs ์คํ๋ผ์ธ ์ง์ ์ฑ์ GitHub ์ ์ฅ์๊ฐ ์์ต๋๊น? ๊ฐ์ฌ ํด์.
Safari์ ํ์ํ appcache
์ฌ์ฉํ์ฌ ๋ค์ ์คํ๋ผ์ธ ์ง์(๋ฒ ํ) ๋ฒ์ ์ ๋ง๋ค์์ต๋๋ค. http://github.com/ssured/nownextmicro๋ฅผ ์ดํด๋ณด์ญ์์ค.
์๋
ํ์ธ์, ์์ฉ๊ตฌ์ ์คํ๋ผ์ธ ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
https://github.com/Sly777/ran
์ฝ๊ฐ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ '์คํ์ '์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์์ด์ ๐ ์ด์จ๋ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค.
@rauchg ์ด ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์ฐ์ ์์์ ๋๊น?
@rauchg next.js 4.0 ๋ฒ ํ๊ฐ ์ถ์๋๋ฉด์ ํด๋น ๋ฒ์ ์ ๋ก๋๋งต์ ์คํ๋ผ์ธ ์ฒซ ๋ฒ์งธ ์ง์์ด ํฌํจ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
๊ธฐ๋ฅ ์์ ๋ถํ๋๋ฆด๊ฒ์^^
Next.js 5.0์ด ์ถ์๋์์ง๋ง(์ถํํฉ๋๋ค!) ์คํ๋ผ์ธ ์ง์์ ๋ํ ์ธ๊ธ์ด ์์ต๋๋ค. ๊ณต์ ํ๊ณ ์ถ์ ์๋ก์ด ๋ก๋๋งต์ด ์์ต๋๊น? ์ง๊ธ๊น์ง ๋๋ผ์ด ์ผ์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
@idhard ์ค์ ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋ผ์ธ ์ง์์ ์ง์ํ์ง ์์ ์ ์์ต๋๋ค.
(ํ์ง๋ง ์ํฉ์ด ๋ฐ๋ ์ ์์)
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ Next.js๊ฐ ๋ง๋ฒ์ ๋ถ๋ฆฌ์ง ์๋๋ก ํ๋ ๊ณผ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ง์ ์นํฉ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ 5๋จ๊ณ๋ 1๋จ๊ณ์
๋๋ค.
@idhard ํฌ๊ด์ ์ธ ์คํ๋ผ์ธ ์ง์์ ๋ํด ์ง๊ด์ ์ด์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ ์ฑ์ ํ์คํ ํด๋น ๊ธฐ๋ฅ์ด ํ์ฑํ๋๋ ๊ฒ์ ์ํ์ง ์์ ๊ฒ์ ๋๋ค.
๋ด ๊ฐ์ธ ์น์ฌ์ดํธ์์ ๋๋ https://github.com/zeit/next.js/tree/canary/examples/with-sw-precache๋ฅผ ์ฌ์ฉ ํ๊ณ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๋ ๋ํ iOS Once iOS์์ ํ๋ก๋์ ์์ ^๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. 11.3์ด ์ถ์๋์์ต๋๋ค.
@hanford ๋ค, ๋น์ทํ ํ ๋ก ์ด CRA์์ ์ํ๋์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์น ์์ ์ ์ง์์ ์ ๊ฑฐํ๊ฒ ๋ฉ๋๋ค(https://github.com/facebook/create-react-app/issues/2554#event-1431558318). ํ์ง๋ง ์ฌ์ ํ ์น ์์ ์๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ PWA๋ ์คํ๋ผ์ธ ์ง์์ ์ํ ์ฌ์ค์์ ์๋ฃจ์ ์ด ๋ ๊ฒ์ด๋ฏ๋ก Next์ ํ์ด ๋ฏธ๋ฆฌ ๊ฐ์ ธ์จ ํ์ด์ง์ ๊ฐ์ ๊ณต์ ์ง์์ ์ถ๊ฐํ ๊ณํ์ด ์๋์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
@idhard ์, ํต์ฌ ํ์ ๋ํ ํฅ๋ฏธ๋ก์ด ๋๋ ๋ง์ ๋๋ค. ์์์ ์ธ๊ธํ sw-precache ํ๋ฌ๊ทธ์ธ์ ์ ๋ง ๋ง์กฑํ์ต๋๋ค.
๋ด ๊ฐ์ธ ์น ์ฌ์ดํธ๋ ์ ์ ๋๋ ํ ๋ฆฌ์์ manifest.json
๋ฅผ ์ ๊ณตํ๋ ๊ฒ๊ณผ ํจ๊ป sw-precache webpack ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ถ๊ธํ์๋ค๋ฉด ์ฝ๋๋ ์ฌ๊ธฐ .. ์ปค๋ฐ์ด ์กฐ๊ธ ์์ฑํ์ง๋ง ์ง๋์ฃผ์ ์คํ๋ผ์ธ ์ง์๊ณผ ๋งค๋ํ์คํธ json์ ์ถ๊ฐํ์ต๋๋ค.
@hanford iOS 11.3์์ ์ด๋ค ์ผ์ด ๋ฐ์ํฉ๋๊น? ์๋น์ค ์์ ์๊ฐ ์์ต๋๊น? ๋ ๋ง์ ์ ๋ณด๊ฐ ์๋ ์ฐธ๊ณ ์๋ฃ๊ฐ ์์ต๋๊น?
@hanford @idhard ์ฐ๋ฆฌ๋ CRA ์ด์ ์ ์๋น์ค ์์ปค๋ฅผ ์๋ํ์ง๋ง ๋ง์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์์ํ๊ฒ ์ ํต์ ์ธ ์น ์บ์ฑ ๊ธฐ์ ๋ก ํ๋ฆฌํ์นญ ์๋ฃจ์
์ ๊ตฌ์ถํ๊ธฐ๋ก ๊ฒฐ์ ํ ์ด์ ์
๋๋ค.
๊ทธ๊ฒ์ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค. ์๋ก์ด ๊ฐ์ ์ฌํญ์ด ๊ณง ์ ๊ณต๋ ์์ ์
๋๋ค.
๋ค ๋ฌผ๋ก ์คํ๋ผ์ธ์ SW๊ฐ ํ์ํ ๊ณณ์
๋๋ค.
๊ทธ๋ฌ๋ ๋งค์ฐ ๋ถ์์ ํ๊ณ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ผ์ด ์๋ชป๋์ด ์ฌ์ดํธ๊ฐ ์์๋ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ค์ค๋ก ํ๊ณ ์ถ์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ Next.js ํ๋ฌ๊ทธ์ธ์ ํตํด sw-precache
์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ ์ถ์ต๋๋ค(๋๋ ๋จ์ํ ์นํฉ ๋ก๋ ๋ฐ ํ๋ฌ๊ทธ์ธ ์ธํธ ์ถ๊ฐ).
@sedubiois ๋ iOS Safari์์ Apples ๊ณํ์ ๋ํด https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.html ์ ์ฐธ์กฐ
์ @ssured @sedubois ์๋น์ค ์์ ์๊ฐ iOS 11.3์ Mobile Safari์ ์๋ฅํ๊ณ ์์ต๋๋ค. ์ด๋ ๋งค์ฐ ํฅ๋ฏธ์ง์งํฉ๋๋ค! ์ ๋ iOS 11.3 ๋ฒ ํ 2๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉฐ ์๋ง์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
@arunoda ๊ฐ ์ ์ํ๋ ๊ฒ์ Next.js
ํ์ฌ ์บ์ฑ ์ ๋ต(์บ์ ์ ์ด ํค๋, etag ๋ฑ)์ด ์๋น์ค ์์ปค๋ณด๋ค ํจ์ฌ ์์ ์ ์ด๋ผ๋ ๊ฒ์
๋๋ค. ์๋น์ค ์์ปค๋ ๋ช ๊ฐ์ง ์ ๋ง ๊น๋ํ ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํนํ ๋คํธ์ํฌ ์์ฒญ์ ๋ํ ๋ณด๋ค ์ธ๋ฐํ ์ ์ด(์บ์๋ ์ฝํ
์ธ ๋ฅผ ์ผ์ฐ ๋ฐํ) .. ํ์ง๋ง Next.js๋ ๋ชจ๋ ๊ณณ์์ ์๋ํ๊ณ ์ค๋ฒํค๋๊ฐ ์๋นํ ์ ์ต๋๋ค. (์๋น์ค ์์ปค๋ฅผ ๋ฑ๋ก ์ทจ์ํ๋ ๊ฒ์ ์ด์ฒด์ ์ธ ๊ณ ํต์
๋๋ค)
@ssured @sedubois ์ ๋ฒ์ Zeit์์ ์ถ์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ์์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์์ต๋๋ค .. ์คํ๋ผ์ธ ๋ค์ ์ฑ์ ์ํํ๊ณ ๊ธฐ์กด ์ฑ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํด์ผ ํฉ๋๋ค.
ํผ๋๋ฐฑ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์! https://github.com/hanford/next-offline
@hanford ์ฐ๋ฆฌ์ ์ถ์ ์กฐ๊ธ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค
@arunoda next.js 5์ ํ๋ฌ๊ทธ์ธ ์ง์์
์์ผ๋ก ๋ฌด์์ ํ ์ง ๊ฒฐ์ ํ๋ ๋ค๋ฅธ ์ฌ๋์ ์ํด sw-precache ์นํฉ ํ๋ฌ๊ทธ์ธ์ ๋น๊ต์ ์ฝ๊ฒ ์ฌ์ฉํ์ต๋๋ค( ์: ๋ค์ ).
์์ฒด ์๋ฃจ์ ์ ์ฌ์ฉํ๊ณ ์์์ง๋ง hanford์์ ์ ๊ณตํ๋ ์๋ฃจ์ ์ผ๋ก ์ ํํ์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ด ์๋น์ค ์์ปค๋ฅผ ์๋ ๋ฑ๋กํ๋ ๊ฒ์ ๋ฉ์ถ๊ธฐ ์ํด next.config.js์์ ๋ช ๊ฐ์ง ์์ ์ ํด์ผ ํ์ง๋ง ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ์ฌ์ฉ์ ์ง์ ์๋ฒ์์ ์ด ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒฝ๋ก ์ค์ ์ด article/:slug๋ก ์์ต๋๋ค. ์ด URL ์ค ํ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ์๋น์ค ์์ ์๊ฐ ํด๋น URL์ ๋ํ ๋ฌธ์๋ฅผ ๋ฐ์กํ๋ ค๊ณ ํฉ๋๋ค. ๋๊ตฌ๋ ์ง ๋ด๊ฐ ๊ทธ๊ฒ์ ๋ฉ์ถ๊ณ ๋์ ๊ธฐ์ฌ๋ฅผ ์ ๊ณตํ๋๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น? ์ด๊ฒ์ Workbox์ ์ค์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
ํฅํ NextJS ๋ฆด๋ฆฌ์ค์์ ์๋น์ค ์์ปค์ ํตํฉ์ด๋ ์คํ๋ผ์ธ ์ง์์ ๊ณ์ ๊ธฐ๋ํด์ผ ํฉ๋๊น? ์์ ์ ์ด๋ค ๋ถ๋ค์ด ์ฐ์ ์์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ์ จ๋ ๊ฒ ๊ฐ์๋ฐ, ์ด ๋ฌธ์ ๊ฐ ๊ณต๊ฐ๋์ง 1๋ ๋ฐ์ด ๋์์ต๋๋ค...
@caribou-code ์ ๋ Zeit ํ์ Next.js ๊ณํ์ ๋ํด ๋งํ ์ ์์ง๋ง, ์ ๋ ์ด๊ฒ์ ์ ์ ์ ์ ์ผ์ต๋๋ค: https://github.com/hanford/next-offline ์๋น์ค ์์ปค๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋
๋๋ ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ๊ฝค ์ ์๋ํ์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ํ๋ก์ ํธ์ธ googles workbox๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค. https://developers.google.com/web/tools/workbox/
next-offline
์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์:
@hanford ์ฌ๊ธฐ์ ๊ฒ์ํ๊ธฐ ์ ์ next-offline์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ๊ฝค ์ข์ต๋๋ค! ์ค์ ๋ก ์ค์ ๋ก ์๋ํ๋ ์ง๊ธ๊น์ง ๊ตฌํํ ์ ์ผํ ์๋ฃจ์ ์ ๋๋ค. ์ ํ์ด!
๊ทธ๋ฌ๋ NextJS ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ด์ ๋ํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ sw-precache-webpack-plugin ๊ณผ ํจ๊ป ์๋ํ๋ ์๋ฃจ์ ์ ์ป๊ณ ์ถ์์ต๋๋ค. ์๋น์ค ์์ปค. ๊ทธ ํ๋ฌ๊ทธ์ธ๋ ๊ฝค ์ธ๊ธฐ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 1๋ ์ ์ NextSimpleStarter๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฌ๋ sw-precache๋ง์ผ๋ก๋ ๋๋ถ๋ถ์ ์คํ๋ผ์ธ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๊ธฐ ๋๋ฌธ์ ์ต๊ทผ์ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ workbox๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ ํํ์ต๋๋ค.
ํ์ง๋ง ์์ง ํ์ฌ ํ์ค(์์ด์ฝ ํฌ๊ธฐ ๋ฑ)์ผ๋ก ์ ๋ฐ์ดํธํ์ง ์์์ผ๋ฉฐ ๋ฉฐ์น ๋ด๋ก ์์ ํ ์์ ์ ๋๋ค. ๋ฌด๋ฃ๋ก ์ฒดํํด ๋ณด์ธ์. ๋ง์กฑ์ค๋ฝ์ง ์์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ญ์ ํ์ญ์์ค.
@hanford ๋ฉ์ง๋ค์ . ๊ฐ๋ฐ ๋ชจ๋์์ ์คํ๋์ง๋ง ํด๋น ๋ชจ๋์๋ ์๋น์ค ์์ปค๊ฐ ์์ต๋๋ค. ๊ทํ์ readme ์์ ๋
ธ๋ ์๋ฒ ์์ด ์๋น์ค ์์ปค์ ํจ๊ป ํ๋ก๋์
๋ชจ๋์์ ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ๋ํ ๋ด ์ฑ์ Netlify์ ๋ฐฐํฌํ๊ณ next export
์์ต๋๋ค. ๋ด ์ฑ์ ์์ ํ ์ ์ ์
๋๋ค. ๋๋ ์๋ฌด ๋ฌธ์ ๊ฐ ์ฌ์ฉํ์ง์ด next export
๊ทธ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด . ๋๋ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข๊ณ ๋น์ฉ์ด ๋ค์ง ์๋ ์ผ์ ํ ๊ฒ์
๋๋ค. ์ทจ๋ฏธ ์ฑ์ด๋ผ ์ตํต์ฑ์ด ์์ต๋๋ค.
@ooade ์ด๊ฒ๋ ์ข์ ๋ณด์ด์ง๋ง ์์ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ ํ์ต๋๋ค. ์ง์์ ๋ฐ๋ผ "์๋ฒ๋ฆฌ์ค"๋ฅผ "์๋ฒ"๋ก ๋ณ๊ฒฝํ๋ฉด ํด๋น ์ค๋ฅ๊ฐ ์์ ๋์์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
A bad HTTP response code (404) was received when fetching the script.
@dancancro next-offline
๋ฅผ ์ฌ์ฉํ๋ฉด์ next-export
๋ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
next-offline
์ ๋ฌธ์ ๋ฅผ ์ฌ์์ฐํ๋ ๋ช ๊ฐ์ง ๋จ๊ณ์ ํจ๊ป ์ด์ด์ ๋ ๊น์ด ์ดํด๋ณผ ์ ์๋๋ก ํ์๊ฒ ์ต๋๊น?
@hanford ๋น์ ์ด ์ํ๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ง๋ง ๋๋ ํน๋ณํ ๊ฒ์ ํ์ง ์์์ผ๋ฉฐ ์คํํฐ์ ๋ํด ์ด๋ค ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์ ์ํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋จ๊ณ๋ ๋จ์ํ ์ฌ์ฉ์์ ์ง์ ์
๋๋ค. ์ ์ผํ ๋ฌธ์ ๋ ํ๋ก๋์
๋ชจ๋์์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅธ๋ค๋ ๊ฒ์
๋๋ค. ์ด ์กฐ๊ฑด ์ผ๋ก ํ๋จํ๋ฉด ์๋น์ค ์์ปค๋ dev ๋ชจ๋์ ๋ฑ๋ก๋์ด์๋ ์ ๋๋ฏ๋ก ๋์๊ฒ ์ผ์ด๋ ์ผ์ ์์๋ ๋์์
๋๋ค. ํ๋ก๋์
๋ชจ๋์์ ์คํํ๋ ๋ฐฉ๋ฒ๊ณผ next export
๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ next export
ํ์ฌ ํ๋ก๋์
๋ชจ๋์์ ์ ์ ์๋ฒ ๋ ๋๋ง ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ง์นจ์ด ํ์ํฉ๋๋ค.
@dancancro ์ดํดํฉ๋๋ค. ํ์ง๋ง ๊ทธ ๋ ผ์๋ ์ฌ๊ธฐ์ ์ผ์ด๋์๋ ์ ๋ฉ๋๋ค. ์ด๊ฒ์ ํ์คํ Next.js ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
์ฌ๊ธฐ ์์ ๋ฌธ์ ๋ฅผ ์ฌ
๊ด๋ จ ์๋ ๋ฌธ์ /๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ ๋ก ํ๋ ๊ฒฝ์ฐ ์ปค๋ฎค๋ํฐ์ ๋์์ด ๋์ง ์์ต๋๋ค.
๋๋ ์ต๊ทผ์ Next.js๋ฅผ ์ํ ์ฌ์ฉํ๊ธฐ ์ฌ์ด Zero config PWA ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์์ต๋๋ค: next-pwa
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ. Google์ ์ฐ๋ฆฌ ํ์ https://github.com/GoogleChrome/sw-precache ๋ฐ https://github.com/GoogleChrome/sw-toolbox ์ ๊ฐ์ React/Webpack ํค๋น์์ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง Service Worker ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Webpack ํ๋ฌ๊ทธ์ธ ํฌํจ)์์ ์์ ํฉ๋๋ค. Lyft, Housing.com, Flipkart ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ดํธ
Next๊ฐ ์คํ๋ผ์ธ ์ง์์ ํ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ๋ช ๊ฐ์ง ์ง์นจ์ ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฝ๋ ๋ถํ ์ด ์ด๋ฏธ ์ํ๋๊ณ ์๋ ๊ฒฝ์ฐ PRPL ๊ณผ ๊ฐ์ ํจํด์
ํด๋น ํ์ด์ง์ ๋ํ ์ฆ๊ฐ์ ์ธ ๋ฐ๋ณต ๋ก๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ ์ธ์๋ V8์ ์ฝ๋ ์บ์ฑ์ ์ผ์ฐ ์ ํํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋ณต ๋ฐฉ๋ฌธ์ ๋ํ ๊ตฌ๋ฌธ ๋ถ์/์ปดํ์ผ ์๊ฐ์ด ์ค๋๋ณด๋ค ๋ฎ์ต๋๋ค.
@rauchg ๊ฐ ํฅ๋ฏธ ์ธ์ณ์ฃผ์ธ์ :)