SlideShare ist ein Scribd-Unternehmen logo
1 von 46
2012.10.24 (Wed)
橋口 誠 a.k.a. gusagi
 menue株式会社   所属
 • ケータイ / スマートフォンサイトとか作ってます
 • 最近は社内勉強会なども色々やってます

 『パーフェクトPHP』書きました

 以前はPHP勉強会@東京の幹事やってました
はじめに


Asset Filter


Dispatcher Filters


まとめ
「資産」「財産」の意
           ↓
css, js, 画像などを指す
js, 画像などもプログラム経由で出力
 css,
  している
 更新が滅多に行われないのにキャッシュが
  使われない
 不要な記述でファイルサイズが大きくなっ
  ている
 ファイル取得に大量のリクエストを送って
  いる
css, jsをgzip圧縮
304 Not Modifiedの制御
css, js内の文字列置換
複数ファイルの一括出力
app/Config/core.php で
    フィルタを設定
Configure::write(
   'Asset.filter.css‘,‘asset.php‘);
 Configure::write(
   'Asset.filter.js‘,‘asset.php‘);
HtmlHelper::css(),
 HtmlHelper::js()
の出力URLが変化
/css/example.css
        ↓
/ccss/example.css
/js/example.js
       ↓
/cjs/example.js
https://github.com/gusagi/WizApp/blob/develop/webroot/asset.php
変数名         値
$url        CakeRequestクラスのオブジェクト->url
$response   CakeResponseクラスのオブジェクト
$filters    Asset.filter で設定した内容(配列型)
$isCss      リクエストファイルがcssかどうか(boolean)
$isJs       リクエストファイルがjsかどうか(boolean)
最後にexitを忘れずに!
 Dispatcherクラスからフィルタ部分を分離
 app/Config/bootstrap.phpで設定
 CakePHP本体では2つのフィルタを用意
  • AssetDispather
     lib/Cake/Routing/Filter/AssetDispatcher.php
  • CacheDispatcher
     lib/Cake/Routing/Filter/CacheDispatcher.php


http://book.cakephp.org/2.0/en/development/dispatch-filters.html
http://api.cakephp.org/class/dispatcher-filter
CakePHPが出力するレスポ
 ンスヘッダを改ざん
デフォルト以外のContent-
 Typeを追加
app/Config/bootstrap.php   で
     フィルタを設定
Configure::write(
 'Dispatcher.filters', array(
    ‘AssetDispatcherEx',
    ‘CacheDispatcher’
));
https://github.com/gusagi/WizApp/blob/develop/Routing/Filter/AssetDispatcherEx.php
css, jsの出力に手を加えたい
 ならAsset Filter
css, js以外の出力に手を加え
 たいならDispatcher Filters
フィルタを使って
コアコードに手を加えずに
 CakePHPを更に美味しく
20121024 phpstudy
20121024 phpstudy

Weitere ähnliche Inhalte

Was ist angesagt?

ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!Kazumi IWANAGA
 
開発環境を全部カソウ化!!
開発環境を全部カソウ化!!開発環境を全部カソウ化!!
開発環境を全部カソウ化!!__Black
 
Build insider testingwithvs
Build insider testingwithvsBuild insider testingwithvs
Build insider testingwithvsTomoyuki Iwade
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfMasahiro NAKAYAMA
 
Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】株式会社キャッチアップ
 
ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~辰徳 斎藤
 
OSS運用管理勉強会LT
OSS運用管理勉強会LTOSS運用管理勉強会LT
OSS運用管理勉強会LTatk1234
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなしTakayoshi Tanaka
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-Takahiro Kida
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちKinuko Yasuda
 
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話Hidetoshi Hirokawa
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築VOYAGE GROUP
 
Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編ThinkIT_impress
 
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php - BREN
 

Was ist angesagt? (19)

ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
 
開発環境を全部カソウ化!!
開発環境を全部カソウ化!!開発環境を全部カソウ化!!
開発環境を全部カソウ化!!
 
Build insider testingwithvs
Build insider testingwithvsBuild insider testingwithvs
Build insider testingwithvs
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + Berkshelf
 
Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】
 
ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~
 
OSS運用管理勉強会LT
OSS運用管理勉強会LTOSS運用管理勉強会LT
OSS運用管理勉強会LT
 
Let's start ISUCON
Let's start ISUCONLet's start ISUCON
Let's start ISUCON
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
 
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編
 
Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
 
Chef on azure
Chef on azureChef on azure
Chef on azure
 

Andere mochten auch

20111006 cakephp2.0 study
20111006 cakephp2.0 study20111006 cakephp2.0 study
20111006 cakephp2.0 studygusagi
 
Brosur perumahan sawangan permai
Brosur perumahan sawangan permaiBrosur perumahan sawangan permai
Brosur perumahan sawangan permaiSnowcool Iconman
 
America since 1945 class 1 movie
America since 1945 class 1 movieAmerica since 1945 class 1 movie
America since 1945 class 1 movieCatawba College
 
Social, Mobile and Media Convergence
Social, Mobile and Media ConvergenceSocial, Mobile and Media Convergence
Social, Mobile and Media ConvergenceKevin Davis
 
Wishes and imaginary situations or events
Wishes and imaginary situations or eventsWishes and imaginary situations or events
Wishes and imaginary situations or eventsmarianacabcal
 

Andere mochten auch (8)

20111006 cakephp2.0 study
20111006 cakephp2.0 study20111006 cakephp2.0 study
20111006 cakephp2.0 study
 
Scuzzy 2011
Scuzzy 2011Scuzzy 2011
Scuzzy 2011
 
Brosur perumahan sawangan permai
Brosur perumahan sawangan permaiBrosur perumahan sawangan permai
Brosur perumahan sawangan permai
 
CopyofResume
CopyofResumeCopyofResume
CopyofResume
 
America since 1945 class 1 movie
America since 1945 class 1 movieAmerica since 1945 class 1 movie
America since 1945 class 1 movie
 
Social, Mobile and Media Convergence
Social, Mobile and Media ConvergenceSocial, Mobile and Media Convergence
Social, Mobile and Media Convergence
 
Wishes and imaginary situations or events
Wishes and imaginary situations or eventsWishes and imaginary situations or events
Wishes and imaginary situations or events
 
Irregular verbs
Irregular verbsIrregular verbs
Irregular verbs
 

Ähnlich wie 20121024 phpstudy

あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)Masanori Ishigami
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうTomomitsuKusaba
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現Daisuke Ikeda
 
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎schoowebcampus
 
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おうSatoru Nasu
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見Yosuke HASEGAWA
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1shotaueda3
 
PowerShell and Release Management Server
PowerShell and  Release Management ServerPowerShell and  Release Management Server
PowerShell and Release Management ServerKazushi Kamegawa
 
担当プロダクトのDBをまるっとリプレイスするためにやったこと
担当プロダクトのDBをまるっとリプレイスするためにやったこと担当プロダクトのDBをまるっとリプレイスするためにやったこと
担当プロダクトのDBをまるっとリプレイスするためにやったことShinya Takara
 
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityCleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityNakanoYosuke1
 
Ja story of cakephp2.0
Ja story of cakephp2.0Ja story of cakephp2.0
Ja story of cakephp2.0Hiroki Shimizu
 

Ähnlich wie 20121024 phpstudy (20)

Jfdg2
Jfdg2Jfdg2
Jfdg2
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
Adobe JSX入門
Adobe JSX入門Adobe JSX入門
Adobe JSX入門
 
Firefoxosハンズオン
FirefoxosハンズオンFirefoxosハンズオン
Firefoxosハンズオン
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
 
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎
スマホ最適化のためのデザイン・コーディング実習 先生:池田 祐太郎
 
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
PowerShell and Release Management Server
PowerShell and  Release Management ServerPowerShell and  Release Management Server
PowerShell and Release Management Server
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
担当プロダクトのDBをまるっとリプレイスするためにやったこと
担当プロダクトのDBをまるっとリプレイスするためにやったこと担当プロダクトのDBをまるっとリプレイスするためにやったこと
担当プロダクトのDBをまるっとリプレイスするためにやったこと
 
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityCleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unity
 
Ja story of cakephp2.0
Ja story of cakephp2.0Ja story of cakephp2.0
Ja story of cakephp2.0
 

20121024 phpstudy