PHP
GoogleAppEngine
cdn
GoogleCloudPlatform

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

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

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

制作物

https://github.com/fumihiko-hidaka/gae-php-barcode

Demo

https://neko-tech-test.appspot.com/gae-php-barcode
コカ・コーラのバーコード

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

実装内容!

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)がかからなくなります。

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

乗せる前

image.png

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

乗せた後にリロード!

image.png

11ms!!

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