レ点腫瘍学ノート

Toppukiwikiカスタマイズ箇所自作プラグイン

swversion.inc.php

pukiwiki プラグイン

74147cef07.png

swversion.inc.php - PukiWiki Service Worker Cache Version Manager

PukiWikiサイトにService Workerを導入している場合に、キャッシュバージョンを簡単に管理できるプラグインです。

概要

WEB高速化のためのService Workerのキャッシュバージョンを管理画面から簡単に更新できるプラグイン。CSS/JavaScript更新時にワンクリックでバージョン番号を自動生成し、訪問者のブラウザキャッシュを確実に更新させます。

Pukiwikiにsw.jsを実装しておくと、各ページで共通の要素(たとえば<header>と<footer>で使われている画像ファイルやCSSなど)を訪問者のローカルにキャッシュさせることで、2回目からのアクセスを驚異的に高速化させます。Service Workerを使ってサイトを高速化している場合、CSS/JavaScriptファイルを更新したときにキャッシュバージョンも更新する必要があります。このプラグインを使うと、ブラウザ上でワンクリックでキャッシュバージョンを更新できます。

ダウンロード先

GitHub - m0370/pukiwiki_sw: PukiWiki用 Service Workerプラグイン
PukiWiki用 Service Workerプラグイン. Contribute to m0370/pukiwiki_sw development by creating an account on GitHub.
https://github.com/m0370/pukiwiki_sw/tree/main

機能

インストール方法

必要なファイルを配置

以下の3つのファイルをPukiWikiに配置します:

/sw.js                          # Service Workerファイル(ルートディレクトリ)
/skin/pukiwiki.skin.php         # Service Worker登録コード付きskinファイル
/plugin/swversion.inc.php       # このプラグイン

ファイルの配置場所

動作確認

ブラウザで以下のURLにアクセスします(Basic認証でログインした状態で):

https://your-site.com/?plugin=swversion

管理画面が表示されれば成功です。

使い方

管理画面にアクセス

https://your-site.com/?plugin=swversion

Basic認証でログインしている必要があります。

現在の状態を確認

管理画面には以下の情報が表示されます:

キャッシュバージョンを更新

  1. Update Cache Version Now」ボタンをクリック
  2. 確認ダイアログで「OK」をクリック
  3. 完了メッセージが表示されます

更新の確認

運用フロー

CSS/JavaScriptを更新した場合

  1. 通常通りCSS/JavaScriptファイルを編集・アップロード
  2. ブラウザで ?plugin=swversion にアクセス
  3. 「Update Cache Version Now」ボタンをクリック
  4. 完了

これで訪問者のブラウザに新しいファイルが配信されます。

デザイン変更時の推奨手順

  1. CSSファイルを編集
  2. サーバーにアップロード
  3. ?plugin=swversion でキャッシュバージョン更新
  4. 自分のブラウザでキャッシュクリアして確認
  5. 完了

セキュリティ

アクセス制御

ファイル書き込み権限

sw.jsファイルに書き込み権限が必要です。パーミッションを確認してください:

chmod 644 sw.js

Webサーバーのユーザー(通常は www-data や apache)が書き込める必要があります。

トラブルシューティング

「Error: sw.js file not found」と表示される

原因: sw.jsファイルが正しい場所にありません

解決方法:

「Failed to write to sw.js file」と表示される

原因: sw.jsファイルに書き込み権限がありません

解決方法:

chmod 644 sw.js
chown www-data:www-data sw.js  # Webサーバーのユーザーに合わせる

「Prohibited by admin (READONLY mode)」と表示される

原因: PukiWikiが読み取り専用モードになっています

解決方法:

Service Workerが動作しない

確認事項:

  1. sw.jsの配置場所: ルートディレクトリ(/sw.js)にあるか
  2. HTTPSか: Service WorkerはHTTPS必須(localhostは例外)
  3. ブラウザの対応: モダンブラウザ(Chrome, Firefox, Safari, Edge)を使用
  4. Console確認: ブラウザのDevToolsでエラーメッセージを確認

ブラウザのDevTools (F12) → Console で以下のメッセージが出れば成功:

Service Worker registered with scope: https://your-site.com/

キャッシュが更新されない

訪問者側での確認:

  1. ブラウザのキャッシュをクリア(Ctrl+Shift+Delete)
  2. スーパーリロード(Ctrl+Shift+R または Cmd+Shift+R)
  3. DevTools → Application → Service Workers で「Update」をクリック

管理者側での確認:

  1. ?plugin=swversion でバージョンが更新されているか確認
  2. sw.jsファイルを直接開いて CACHE_VERSION の値を確認

カスタマイズ

キャッシュ対象ファイルの追加

sw.jsファイルを編集して、STATIC_CACHE_URLS 配列にファイルを追加します:

const STATIC_CACHE_URLS = [
  '/skin/pukiwiki.css',
  '/skin/main.js',
  '/image/pukiwiki.png',
  // 追加したいファイル
  '/skin/custom.css',
  '/image/logo.png'
];

バージョン番号の形式変更

プラグイン内の以下の行を編集します(swversion.inc.php の48行目付近):

// 現在: YYYYMMdd-HHiiss 形式
$new_version = date('Ymd-His');
// 例: YYYYMMDD-vN 形式にしたい場合
$new_version = date('Ymd') . '-v' . time();

ファイル構成

your-pukiwiki/
├── index.php
├── sw.js                       # Service Workerファイル(このプラグインが更新)
├── skin/
│   └── pukiwiki.skin.php       # Service Worker登録コード含む
└── plugin/
    └── swversion.inc.php       # このプラグイン

動作環境

ライセンス

GPL v2 or (at your option) any later version

関連リンク

バージョン履歴


Note: このプラグインはService Workerを導入済みのPukiWikiサイト専用です。Service Workerを導入していない場合は、まず sw.js と pukiwiki.skin.php を配置してください。

関連記事

Service Workerのキャッシュを簡単管理するPukiWikiプラグイン - レ点腫瘍学ノート
技術メモ pukiwiki プラグインのダウンロードと設置方法ダウンロード設置方法の解説解説Service Workerとキャッシュ更新の問題従来の方法と課題swversion.inc.php の設計セキュリティ対策複数サイトでの展開実際の運用での効果今後の可能性まとめウェブサイトの高速化技術として、

この記事に対するコメント

このページには、まだコメントはありません。

お名前:

更新日:2025-10-27 閲覧数:401 views.