Posted at

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!!

はやーい!!

変態的な速さでした!!