ソーシャルボタンにツイートされた数とかを載せるのには JavaScriptでAPIを叩いて数取ってきて挿入、みたいなことが良くされますが、 いくつも違うソーシャルボタンがあると結構負担がかかります。
このブログはテストも兼ねて毎日一度はビルドして更新する様にしているので 最大一日程度なら数が変わらなくてもそんなに困らないだろう、 ということで数をビルド時に取ってきて埋め込んでしまうようにしました。
このブログでのソーシャルボタン
これまでにソーシャルボタン関係では
みたいな事をやって来ましたが、 基本的には上にも書いたとおりページを読み込んだ時に JavaScriptで数を取ってきて書いてました。
pluginを使ってjekyll build時に数を取ってくる
上のレポジトリに入ってます。 ソーシャルボタンを自作に変更 の所でやったJavaScriptで数だけ取ってくる物も source/javascripts/share-numbers.jsに入っています。
ビルド時に取ってくるには plugins/share-numbers.rbをpulginsディレクトリに入れて、 _config.ymlの中で
# CPUs for parallel jobs
n_cores: 4
# Choose method
share_official: false
share_custom: true
share_static: true
share_check_all: false
# Select shares
hatebu_button: true
twitter_button: true
googleplus_button: true
facebook_button: true
pocket_button: true
linkedin_button: false
stumble_button: false
pinterest_button: false
buffer_button: false
delicious_button: false
tumblr_button: false
な感じで設定してあげるとtrue
になってるボタンの数を
プラグインの中で取ってきて
source/_includes/post/sharing_custom.htmlの中に書き込みます。
これをページの上部や下部等においておけばOK。
Octopressデフォルトだと source/_layouts/post.htmlの中に元のsharing.htmlを呼び込んでるものがあるのでそこで
1 2 3 4 5 6 7 8 9 10 |
|
な感じで入れておくと最初からあるものと置き換えられます。
hatebu_button
、twitter_button
、googleplus_button
、facebook_button
、pocket_button
をtrue
な状態で450位あるこのブログをjekyll build
すると
8 coresな環境で1分半位かかります。
Parallelに事項しない(n_cores: 1
)でやると13分程かかるので
ちょっとCPUが沢山使える所でjekyll build
したい所です。
今は主に
werckerを使ってBitbucketのプライベートレポジトリからOctopressを自動デプロイする
でやった様にwerkerでビルドしてますが、
werkcerでのテスト環境がどんな環境なのか探してみても
ちょっと見つからなかったんですが、
cat /proc/cpuinfo
してみたら
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping : 4
microcode : 0x415
cpu MHz : 2494.070
cache size : 25600 KB
physical id : 1
siblings : 8
core id : 0
cpu cores : 1
apicid : 32
initial apicid : 32
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase erms
bogomips : 4988.14
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
...
な感じのCPUが8つある環境だったので ちょっとthreadを2、4、8、16とかでやってみたところ、 ちゃんと8で一番速く(丁度シングルスレッドの8倍位)になったので特に制限もなく使えるのかな、と。
それでもちょっと余計に時間がかかるようになりますが、 その代わりページの表示は大分速くなったと思います。