しばらくの間、ブログからコメントを削除したかった。 主にコメントがほとんどないため、余分な
Disqusの 「ブレーキ」をいじりたいとは思わないからです。 Disqusの起動時間を見て、サイトのユーザーが自分のせいで我慢しなければならないことにショックを受けました(
Privacy Badgerや
uBlock Originなどのブロッカーを使用している人を除きます)。
この記事はHugo向けに書かれていますが、コードはどのサイトにも簡単に適応できます。
Disqusの何が問題になっていますか?
Disqusが
有効な場合の典型的なクエリログは次のとおりです。
しかし、Disqusを
無効にした後のログ。
何!?ここで重要な点は次のとおりです。
- ダウンロード時間が6秒から2秒に短縮されました。
- ネットワーク要求の数が105から16に削減されました。
- ユーザーを追跡するために、ネットワークを介して多くの無関係な要求があります。
ネットワーク要求の中には、次のものがあります。
- disqus.com-明らかに!
- google - analytics.com-多数のリクエスト。 誰があなたをフォローしているかわかりません。
- connect.facebook.net -Facebookにログインしている場合、彼らはこのサイトへの訪問について知っています。
- accounts.google.com -Googleは、任意のGoogleアカウントを通じてこのサイトへのアクセスも追跡します。
- pippio.com-ビジネス目的であなたに関する情報を収集するLiveRamp認証。
- bluekai.com-マーケティングキャンペーンの個々のユーザートラッキング。
- crwdcntrl.net-ウイルスやスパイウェアの拡散に関連して言及されているかなり疑わしいサイト。
- exelator.com-ユーザーを追跡するための別のサイトで、ウイルスの名前も付けられています!
- doubleclick.net-これはすべて知っています。ユーザーアクションの広告と追跡はGoogleに属します。
- tag.apxlv.net-これは非常に疑わしく、所有者がドメインを難読化したトリックのように見えます(このような手法が機能することさえ知りませんでした!)。 サイトにトラッキングピクセルを追加します。
- adnxs.com-さらに多くのゴミを追跡しますが、もう少し豊富です。
- adsymptotic.com-機械学習を使用することになっている広告と監視。
- rlcdn.com -Rapleafによる難読化された広告/追跡。
- adbrn.com- 「AdbrainユーザーIDを通じてマッチングテクノロジーを使用して、デバイス、チャネル、およびプラットフォーム全体でユーザーごとの旅を提供します。」
- nexac.com -OracleのDatalogix 、監視および行動分析のための独自のがらくた。
- tapad.com-それだけです、私はそれらについての情報を探すのにうんざりしています。
- liadm.com-その他? じゃあ...
- sohern.com-うーん。 追跡します。
- demdex.net-追跡。 Adobeから。
- bidswitch.net-別のヒントをお伝えします...
- agkn.com-...
- mathtag.com-面白い名前、多分それは...いいえ。 あなたを見ています。
これらのサイトの多くはuBlock Originでブロックされているためアクセスできません。そのため、Googleの検索結果とサードパーティのサイトから情報を収集する必要がありました。 言うまでもなく、無料の製品があなたを製品に変える方法を見るのはむしろうんざりします。 目的と目的、あなたの行動を監視する理由を隠そうとするサービスは、さらに多くの恐怖を引き起こします。
いずれにしても、削除してください。 これらのネットワークでサイトを汚染してしまったことを皆に謝ります。 最高のものに移りましょう。
コメントにGithubを使用する
Disqusの削除について議論し、
@ HarryDenholmは、友人がプルリクエストを使用して静的なGithubブログにコメントを実装できたと述べました。 それは素晴らしいアイデアだと思い、外部サイトでHugoにこのようなことができるかどうかを調べることにしました。
答えは
Github Issue APIに含まれてい
ます 。 プロセスは非常に簡単で、
このブログ投稿で既に機能しています:
- 公開された各投稿について、GithubのリポジトリでIssueを開きます。 たとえば、この投稿については、 こちらで公開されています 。
- すべてのコメントはGithubに直接投稿されます。
- この課題のコメントのJSON記述を読み取り、それらを表示するJavascriptコードをサイトに追加します。
このアプローチの利点はすぐに得られます。
- サイト訪問者の追跡はゼロに削減されます。 Github自体は、匿名IPから読み取るネットワーク要求のみを認識します。
- すべてのコメントは、インラインコード、画像、リスト、および書式設定をサポートするMarkdownで記述されています。
- Githubの応答通知を使用できます。 このサイトにアクセスしてコメントを読んだり、ディスカッションに参加したりする必要はありません。
- これは不要に思えますが、 Github Reactionsの絵文字を統合することができます(大規模なサイトに役立つ場合があります)。
Github JSONデータを読み取るためにAPIキーは必要ありません。 それらは完全にアクセス可能です。 この投稿に対するコメントは、
ここで JSONとして読むことができ
ます 。 最初のコメントは次のようになります。
{ : , : , : , : 295004846, : { : , : 1532903, : , : , : , : , : , : , : , : , : , : , : , : , : , : , : false }, : , : , : },
最初のステップは、テンプレートの一部を使用してディレクトリに新しいテンプレートを追加することです。 Github
comments.html
(
comments.html
)を読み取って表示します。 私が使用したコードは次のとおりです。
var url = "https://github.com/dwilliamson/donw.io/issues/" + {{ $.Params.ghcommentid }} var api_url = "https://api.github.com/repos/dwilliamson/donw.io/issues/" + {{ $.Params.ghcommentid }} + "/comments" $(document).ready(function () { $.ajax(api_url, { headers: {Accept: "application/vnd.github.v3.html+json"}, dataType: "json", success: function(comments) { $("#gh-comments-list").append("Visit the <b><a href='" + url + "'>Github Issue</a></b> to comment on this post"); $.each(comments, function(i, comment) { var date = new Date(comment.created_at); var t = "<div id='gh-comment'>"; t += "<img src='" + comment.user.avatar_url + "' width='24px'>"; t += "<b><a href='" + comment.user.html_url + "'>" + comment.user.login + "</a></b>"; t += " posted at "; t += "<em>" + date.toUTCString() + "</em>"; t += "<div id='gh-comment-hr'></div>"; t += comment.body_html; t += "</div>"; $("#gh-comments-list").append(t); }); }, error: function() { $("#gh-comments-list").append("Comments are not open for this post yet."); } }); });
投稿ページから呼び出すことができます:
{{ partial "comments.html" . }}
テンプレートによって参照される変数は、htmlページのヘッダーに追加する必要があります。 この場合、これは唯一の
ghcommentid
変数であり、コメントに使用されるIssue番号を設定します。
まとめ
これ以上追加するものはありません。 技術的には、通常、投稿をGithubの問題として投稿し、ブログエンジンを忘れることができます。 しかし、これはシステムの誤用のようです。
このWebサイトは、Githubで
dwilliamson / donw.ioとして運営されてい
ます。 Githubをコメントエンジンとして使用するための完全なコードがあります。