phpでバーコードを作ってGoogleAppEngineでCDN配信する


みんな大好きPHPもたまにはということで
動的にバーコードを作りたいんですが、バーコードの形式なんて早々変わるものでもないので……
どうせなら作成した結果はCDNに乗せてしまいたいなというニッチな目的を達成しようと思います。

php-barcode-generatorというライブラリを使用しています。

制作物

Demo

https://neko-tech-test.appspot.com/gae-php-barcode

コカ・コーラのバーコードです

実装内容!

barcode.php
<?php
require_once "vendor/autoload.php";

$generator = new Picqer\Barcode\BarcodeGeneratorPNG();

// CND配信されると10sかからないよ!
sleep(10);

header("Content-type: image/png");
header("cache-control: public, max-age=3600");

echo $generator->getBarcode(
    '4902102072618',
    $generator::TYPE_EAN_13,
    190 / 95,
    100
);

超シンプルです。
説明する必要あるかな……

composerでinstallしたライブラリを読み込んで、画像データを返してあげています。
この時にcache-controlのheaderをつけて返してあげると!
Google App Engineの強力なエッジキャッシュに乗っかってくれるので、sleep(10)がかからなくなります。

キャッシュについてはこの記事がわかりやすかったです。

乗せる前

10.25s!
まぁ、内部でsleep(10)してるからね……

乗せた後にリロード!

11ms!!

はやーい!!
変態的な速さでした!!