SNS Count Cache 플러그인으로 https화 대책
SNS Count Cache 플러그인 정보
SNS Count Cache 플러그인은, SNS계 버튼을 고속으로 표시시키기 위한 플러그인입니다.
SNS Count Cache 플러그인을 설치하면 SNS 계열 버튼의 카운트 수를 주기적으로 DB에 캐시하게 됩니다.
각종 SNS 버튼의 디자인을 별도로 준비해, 카운트수를 함수로 취득시키는 것으로 고속의 버튼 표시가 가능하게 됩니다.
SNS Count Cache 플러그인의 https 합산 기능
이 외에도 SNS Count Cache 플러그인에는 http와 https를 합산하여 표시하는 기능이 있습니다.
http로 운용하고 있는 Wordpress 사이트를 https화하면 facebook이 좋아요! 수등의 SNS계 버튼의 카운트수가 0에 리셋 되어 버리기 때문에, https화시에는 꼭 도입해 두고 싶은 플러그인입니다.
SNS Count Cache 설정 화면에서 https화 시 다음 항목으로 설정합니다.
설정 갱신 직후에는 카운트 수가 일시적으로 0이 되지만, 서서히 캐쉬가 시작되어, http와 https의 카운트수를 합산해 표시되게 됩니다.
https화 후 플러그인을 올바르게 작동시키기 위해 한 일
SNS Count Cache 플러그인 버전 0.9.1을 도입하여 https화를 설정했지만 잘 작동하지 않고 카운트 수가 0으로 유지되었습니다.
(보충하면, 관리 화면에서 수동으로 캐쉬하면 http분만 캐쉬되었습니다. 또, 하테나 북마크만은 올바르게 합산 표시되고 있었습니다)
소스를 디버그하고 조사한 결과, sns-count-cache.php 의 1016행째의, 다음의 설정을 코멘트 아웃 하는 것으로, 잘 동작했습니다.
// Pocket and Google+ are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
//self::REF_SHARE_POCKET,
//self::REF_SHARE_GPLUS,
//self::REF_FOLLOW_TWITTER,
//self::REF_FOLLOW_FACEBOOK,
//self::REF_FOLLOW_PUSH7,
//self::REF_FOLLOW_INSTAGRAM
);
SNS Count Cache 플러그인의 작동 개요
SNS Count Cache 플러그인은 다음 URL을 통해 액세스하여 검색된 JSON 데이터에서 카운트 수를 검색하고 DB에 캐시합니다.
이 외에도 SNS Count Cache 플러그인에는 http와 https를 합산하여 표시하는 기능이 있습니다.
http로 운용하고 있는 Wordpress 사이트를 https화하면 facebook이 좋아요! 수등의 SNS계 버튼의 카운트수가 0에 리셋 되어 버리기 때문에, https화시에는 꼭 도입해 두고 싶은 플러그인입니다.
SNS Count Cache 설정 화면에서 https화 시 다음 항목으로 설정합니다.
설정 갱신 직후에는 카운트 수가 일시적으로 0이 되지만, 서서히 캐쉬가 시작되어, http와 https의 카운트수를 합산해 표시되게 됩니다.
https화 후 플러그인을 올바르게 작동시키기 위해 한 일
SNS Count Cache 플러그인 버전 0.9.1을 도입하여 https화를 설정했지만 잘 작동하지 않고 카운트 수가 0으로 유지되었습니다.
(보충하면, 관리 화면에서 수동으로 캐쉬하면 http분만 캐쉬되었습니다. 또, 하테나 북마크만은 올바르게 합산 표시되고 있었습니다)
소스를 디버그하고 조사한 결과, sns-count-cache.php 의 1016행째의, 다음의 설정을 코멘트 아웃 하는 것으로, 잘 동작했습니다.
// Pocket and Google+ are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
//self::REF_SHARE_POCKET,
//self::REF_SHARE_GPLUS,
//self::REF_FOLLOW_TWITTER,
//self::REF_FOLLOW_FACEBOOK,
//self::REF_FOLLOW_PUSH7,
//self::REF_FOLLOW_INSTAGRAM
);
SNS Count Cache 플러그인의 작동 개요
SNS Count Cache 플러그인은 다음 URL을 통해 액세스하여 검색된 JSON 데이터에서 카운트 수를 검색하고 DB에 캐시합니다.
// Pocket and Google+ are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
//self::REF_SHARE_POCKET,
//self::REF_SHARE_GPLUS,
//self::REF_FOLLOW_TWITTER,
//self::REF_FOLLOW_FACEBOOK,
//self::REF_FOLLOW_PUSH7,
//self::REF_FOLLOW_INSTAGRAM
);
SNS Count Cache 플러그인은 다음 URL을 통해 액세스하여 검색된 JSON 데이터에서 카운트 수를 검색하고 DB에 캐시합니다.
https://api.facebook.com/method/links.getStats?format=json&urls=【SNS 버튼을 설치한 URL】
https://apis.google.com/_/+1/fastbutton?url=[SNS 버튼을 설치한 URL]
http://widgets.getpocket.com/v1/button?v=1&count=horizontal&url=【SNS 버튼을 설치한 URL】
http://api.b.st-hatena.com/entry.count?url=【SNS 버튼을 설치한 URL】
http에서 가동하고 있던 WordPress 사이트를 https화하고, SNS Count Chache 플러그인의 https 설정을 해 두면, 자동 캐쉬시에, 우선 http로 카운트수를 취득한 후, https에서도 카운트수를 취득하러 갑니다 .
이 처리를 실시하고 있는 것이,
class-share-cache-engine.php 72행의 cache 함수
됩니다.
public function cache( $options = array() ) {
...
if ( $this->scheme_migration_mode && Common_Util::is_secure_url( $target_url ) ) {
if ( ! isset( $this->scheme_migration_date ) ) {
$target_normal_url = Common_Util::get_normal_url( $target_url );
$target_sns_migrated = $target_sns;
foreach ( $this->scheme_migration_exclude_keys as $sns ) {
unset( $target_sns_migrated[$sns] );
}
...
$migrated_data = $this->get_data( $target_sns_migrated, $target_normal_url );
...
foreach ( $target_sns_migrated as $sns => $active ) {
if ( $active && isset( $migrated_data[$sns] ) && is_numeric( $migrated_data[$sns] ) && $migrated_data[$sns] > 0 ){
$data[$sns] = $data[$sns] + $migrated_data[$sns];
}
}
} else {
if ( isset( $publish_date ) ) {
if ( strtotime( $publish_date ) <= strtotime( $this->scheme_migration_date ) ) {
$target_normal_url = Common_Util::get_normal_url( $target_url );
$target_sns_migrated = $target_sns;
foreach ( $this->scheme_migration_exclude_keys as $sns ) {
unset( $target_sns_migrated[$sns] );
}
...
$migrated_data = $this->get_data( $target_sns_migrated, $target_normal_url );
...
foreach ( $target_sns_migrated as $sns => $active ) {
if ( $active && isset( $migrated_data[$sns] ) && is_numeric( $migrated_data[$sns] ) && $migrated_data[$sns] > 0 ){
$data[$sns] = $data[$sns] + $migrated_data[$sns];
}
}
}
} else {
$target_normal_url = Common_Util::get_normal_url( $target_url );
$target_sns_migrated = $target_sns;
foreach ( $this->scheme_migration_exclude_keys as $sns ) {
unset( $target_sns_migrated[$sns] );
}
...
$migrated_data = $this->get_data( $target_sns_migrated, $target_url );
...
foreach ( $target_sns_migrated as $sns => $active ) {
if ( $active && isset( $migrated_data[$sns] ) && is_numeric( $migrated_data[$sns] ) && $migrated_data[$sns] > 0 ){
$data[$sns] = $data[$sns] + $migrated_data[$sns];
}
}
}
}
...
이 함수에서 위에서 주석 처리했습니다.
$this->scheme_migration_exclude_keys
에 해당 SNS의 값이 들어 있으면, 그 SNS에 대해서는 https로 캐시되지 않게 되어 버립니다.
(하테나 북마크가 올바르게 합산되어 표시되어 있던 것은, 이 안에 포함되어 있지 않았기 때문이었습니다)
남은 의문
왜 아래의 SNS에 대해서는 http와 https의 합산 처리를 제외하는가?
// Pocket and Google+ are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
self::REF_SHARE_POCKET,
self::REF_SHARE_GPLUS,
self::REF_FOLLOW_TWITTER,
self::REF_FOLLOW_FACEBOOK,
self::REF_FOLLOW_PUSH7,
self::REF_FOLLOW_INSTAGRAM
);
Twitter는 카운트수를 표시하지 않게 되었으므로, 더 이상 관계 없습니다만, Pocket와 Google+에 대해서는 자동적으로 합산하기 때문에 필요없는 취지의 코멘트가 쓰여져 있습니다.
그러나 예를 들어 Google+에서는 다음 URL에서 카운트 수를 얻었지만,
http, https로 각각 취득해 확인한 결과, (합산된 값이 아니라) 각각의 카운트수가 취득되었기 때문에, 역시 migration 대상으로 해 두지 않으면 올바르게 동작하지 않는다고 생각합니다.
Reference
이 문제에 관하여(SNS Count Cache 플러그인으로 https화 대책), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yKanazawa/items/e79733b71e0be7084f75
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// Pocket and Google+ are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
self::REF_SHARE_POCKET,
self::REF_SHARE_GPLUS,
self::REF_FOLLOW_TWITTER,
self::REF_FOLLOW_FACEBOOK,
self::REF_FOLLOW_PUSH7,
self::REF_FOLLOW_INSTAGRAM
);
Reference
이 문제에 관하여(SNS Count Cache 플러그인으로 https화 대책), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yKanazawa/items/e79733b71e0be7084f75텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)