diff --git a/fixtures/www.infoq.com/1554555811551.html b/fixtures/www.infoq.com/1554555811551.html new file mode 100644 index 000000000..4f471c12f --- /dev/null +++ b/fixtures/www.infoq.com/1554555811551.html @@ -0,0 +1,1928 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google ChromeのNever-Slow Mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ BT +
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + + + + + + +

+ InfoQ ホームページ + + + + + ニュース + + + Google ChromeのNever-Slow Mode + + + + + +

+ +
+
+ + + + + + + + + + +
+
+ +
+
+
+
+

+ Google ChromeのNever-Slow Mode +

+
+
+ + + + + + + + + + + + + + +

+ Leia em + + + português + + + +

+ + + + +
+
+ + + + + + + + + + + ブックマーク + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+ +
+ + + + + + + +
+

原文(投稿日:2019/02/16)へのリンク

+ +

GoogleはNever-Slow Modeと呼ばれるプロトタイプ機能に取り組んでいる。このプロトタイプ機能はChromium プロジェクトコミット作業進行中であり、ユーザーエクスペリエンスの向上、一貫性のある迅速なブラウジングの提供を目的としている。

+ +

w3schoolsによると、Google Chromeは70%以上のマーケットシェアを持ち、次いでFirefoxが10%、Internet Explorer / Edgeが4%である。Googleサービスとの同期や数千もの拡張機能など、一連の機能によってGoogle Chromeが最上位に君臨している。さらにGoogleはブラウザ上で動作するアプリを多数提供しており、絶えずWebサイトのパフォーマンスを向上させるための取り組を実施し、Webページ読み込み遅延の短縮とWebセキュリティの改善に重点を置いたHTTPトラフィックを操作するSPDYプロトコルなどの新しいスペックやツールに貢献している。

+ +

GoogleのNever-Slow Modeは一般的な方法で、CSS、画像、大規模なスクリプトなどのリソースを制限するバジェットを導入している。Alex Russell氏によると、これらのバジェットはメインスレッドをきれいに維持するために設計されている。

+ +
+

現在のところNever-Slow Modeは、大きなスクリプトをブロックし、特定のリソースタイプ(スクリプト、フォント、CSS、画像)へのバジェット設定、document.write()の無効化、同期XHRの上書き、クライアントヒントの全面的な有効化、 `Content-Length`が設定されていないリソースのバッファを実施しています。バッファはインタラクション(クリック/タップ/スクロール)で再設定されます。長いスクリプトタスク(200ミリ秒以上)は、次のインタラクションまですべてのページの実行を一時停止します。

+
+ +

これらの上限はworkerには適用されず、サイズ上限はService Worker Cache Storageからロードされたリソースに対しては引き上げられる。現在の上限は次の通り。

+ +
+
+    Per-image max size:        1MiB
+    Total image budget:        2MiB
+    Per-stylesheet max size: 100KiB
+    Total stylesheet budget: 200KiB
+    Per-script max size:      50KiB
+    Total script budget:     500KiB
+    Per-font max size:       100KiB
+    Total font budget:       100KiB
+    Total connection limit:   10
+    Long-task limit:         200ms
+
+ +

バジェットを超えてブラウザによってブロックされたリソースを知らせるプロトタイプ機能のNever-Slow Modeの説明をDinsan Francis氏は見つけた

+ +
+

これにより、リソースのローディングとランタイム処理を制限する実験的なブラウジングモードが可能になり、一貫して高速なエクスペリエンスの提供が実現できます。警告:黙ってコンテンツを壊す可能性があります!

+
+ +

インターネットの速度はそれほど速くなっていないのに対し、Webサイトのサイズはここ数年で大幅に拡大している。KeyCDNの分析では、平均的なWebページサイズが2010年の約700キロバイトから2016年には2300キロバイトまで増加したという

+ +

(image taken from https://www.keycdn.com)

+ +

Never-Slow Modeのリリース予定日に関する情報や、Never-Slow ModeがChromeの次のメジャーバージョンに含まれるかどうかについて、現時点では発表されていない。

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+
+ + + + + + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + +
+
+
+ +
+
+

コミュニティコメント

+
+
+ + + +
+
+ + +
    + +
+
+
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+

+
+ +
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + +
+ BT +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/src/extractors/custom/index.js b/src/extractors/custom/index.js index e48948c9c..c2424ad0e 100644 --- a/src/extractors/custom/index.js +++ b/src/extractors/custom/index.js @@ -106,3 +106,4 @@ export * from './jvndb.jvn.jp'; export * from './genius.com'; export * from './www.jnsa.org'; export * from './phpspot.org'; +export * from './www.infoq.com'; diff --git a/src/extractors/custom/www.infoq.com/index.js b/src/extractors/custom/www.infoq.com/index.js new file mode 100644 index 000000000..710f9d0ac --- /dev/null +++ b/src/extractors/custom/www.infoq.com/index.js @@ -0,0 +1,35 @@ +export const WwwInfoqComExtractor = { + domain: 'www.infoq.com', + + title: { + selectors: ['h1.heading'], + }, + + author: { + selectors: ['div.widget.article__authors'], + }, + + date_published: { + selectors: ['.article__readTime.date'], + format: 'YYYY年MM月DD日', + timezone: 'Asia/Tokyo', + }, + + dek: { + selectors: [['meta[name="og:description"]', 'value']], + }, + + lead_image_url: { + selectors: [['meta[name="og:image"]', 'value']], + }, + + content: { + selectors: ['div.article__data'], + + defaultCleaner: false, + + transforms: {}, + + clean: [], + }, +}; diff --git a/src/extractors/custom/www.infoq.com/index.test.js b/src/extractors/custom/www.infoq.com/index.test.js new file mode 100644 index 000000000..6f6c774c3 --- /dev/null +++ b/src/extractors/custom/www.infoq.com/index.test.js @@ -0,0 +1,114 @@ +import assert from 'assert'; +import URL from 'url'; +import cheerio from 'cheerio'; + +import Mercury from 'mercury'; +import getExtractor from 'extractors/get-extractor'; +import { excerptContent } from 'utils/text'; + +const fs = require('fs'); + +describe('WwwInfoqComExtractor', () => { + describe('initial test case', () => { + let result; + let url; + beforeAll(() => { + url = 'https://www.infoq.com/jp/news/2019/02/chrome-never-slow-mode'; + const html = fs.readFileSync( + './fixtures/www.infoq.com/1554555811551.html' + ); + result = Mercury.parse(url, { + html, + fallback: false, + }); + }); + + it('is selected properly', () => { + // This test should be passing by default. + // It sanity checks that the correct parser + // is being selected for URLs from this domain + const extractor = getExtractor(url); + assert.equal(extractor.domain, URL.parse(url).hostname); + }); + + it('returns the title', async () => { + // To pass this test, fill out the title selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + const { title } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(title, `Google ChromeのNever-Slow Mode`); + }); + + it('returns the author', async () => { + // To pass this test, fill out the author selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + const { author } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(author, '作者: Diogo Carleto 翻訳者 中村 真子'); + }); + + it('returns the date_published', async () => { + // To pass this test, fill out the date_published selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + const { date_published } = await result; + + // Update these values with the expected values from + // the article. + assert.equal(date_published, '2019-02-26T15:00:00.000Z'); + }); + + it('returns the dek', async () => { + // To pass this test, fill out the dek selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + const { dek } = await result; + + // Update these values with the expected values from + // the article. + assert.equal( + dek, + 'GoogleはNever-Slow Modeと呼ばれるプロトタイプ機能に取り組んでいる。このプロトタイプ機能はChromium プロジェクトでコミット作業進行中であり、ユーザーエクスペリエンスの向上、一貫性のある迅速なブラウジングの提供を目的としている。' + ); + }); + + it('returns the lead_image_url', async () => { + // To pass this test, fill out the lead_image_url selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + const { lead_image_url } = await result; + + // Update these values with the expected values from + // the article. + assert.equal( + lead_image_url, + `https://cdn.infoq.com/statics_s2_20190403-0313/styles/i/logo-big.jpg` + ); + }); + + it('returns the content', async () => { + // To pass this test, fill out the content selector + // in ./src/extractors/custom/www.itmedia.co.jp/index.js. + // You may also want to make use of the clean and transform + // options. + const { content } = await result; + + const $ = cheerio.load(content || ''); + + const first13 = excerptContent( + $('*') + .first() + .text(), + 2 + ); + + // Update these values with the expected values from + // the article. + assert.equal( + first13, + '原文(投稿日:2019/02/16)へのリンク GoogleはNever-Slow' + ); + }); + }); +});