Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
8e725955
Commit
8e725955
authored
Jan 31, 2015
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja changed "コンテンツ" to "コンテント" [ci skip]
parent
75dd45a8
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
49 additions
and
49 deletions
+49
-49
caching-data.md
docs/guide-ja/caching-data.md
+3
-3
caching-fragment.md
docs/guide-ja/caching-fragment.md
+24
-24
caching-http.md
docs/guide-ja/caching-http.md
+5
-5
caching-page.md
docs/guide-ja/caching-page.md
+3
-3
intro-yii.md
docs/guide-ja/intro-yii.md
+1
-1
runtime-responses.md
docs/guide-ja/runtime-responses.md
+2
-2
structure-assets.md
docs/guide-ja/structure-assets.md
+1
-1
structure-extensions.md
docs/guide-ja/structure-extensions.md
+1
-1
structure-filters.md
docs/guide-ja/structure-filters.md
+1
-1
structure-widgets.md
docs/guide-ja/structure-widgets.md
+8
-8
No files found.
docs/guide-ja/caching-data.md
View file @
8e725955
...
@@ -71,14 +71,14 @@ Yii 縺ッ縺輔∪縺悶∪縺ェ繧ュ繝」繝す繝・繧ケ繝医Ξ繝シ繧ク繧偵し繝昴繝医@縺ヲ縺∪
...
@@ -71,14 +71,14 @@ Yii 縺ッ縺輔∪縺悶∪縺ェ繧ュ繝」繝す繝・繧ケ繝医Ξ繝シ繧ク繧偵し繝昴繝医@縺ヲ縺∪
*
[
[yii\caching\ApcCache
]
]: PHP の
[
APC
](
http://php.net/manual/ja/book.apc.php
)
拡張モジュールを使用します。集中型の分厚いアプリケーションのキャッシュを扱うときには最速の一つとして考えることができます (例えば、サーバが 1 台であったり、専用のロードバランサを持っていない、など) 。
*
[
[yii\caching\ApcCache
]
]: PHP の
[
APC
](
http://php.net/manual/ja/book.apc.php
)
拡張モジュールを使用します。集中型の分厚いアプリケーションのキャッシュを扱うときには最速の一つとして考えることができます (例えば、サーバが 1 台であったり、専用のロードバランサを持っていない、など) 。
*
[
[yii\caching\DbCache
]
]: キャッシュされたデータを格納するためにデータベースのテーブルを使用します。このキャッシュを使用するには
[
[yii\caching\DbCache::cacheTable
]
] で指定したテーブルを作成する必要があります。
*
[
[yii\caching\DbCache
]
]: キャッシュされたデータを格納するためにデータベースのテーブルを使用します。このキャッシュを使用するには
[
[yii\caching\DbCache::cacheTable
]
] で指定したテーブルを作成する必要があります。
*
[
[yii\caching\DummyCache
]
]: 実際にはキャッシュを行わない、キャッシュの代替を提供します。このコンポーネントの目的は、キャッシュが利用できることをチェックするためのコードを簡略化することです。たとえば、開発中やサーバに実際のキャッシュサポートがない場合に、このキャッシュコンポーネントを使用することができます。そして、実際のキャッシュサポートが有効になったときに、対応するキャッシュコンポーネントに切替えて使用します。 どちらの場合も、
`Yii::$app->cache`
が null かも知れないと心配せずに、データを取得するために同じコード
`Yii::$app->cache->get($key)`
を使用できます。
*
[
[yii\caching\DummyCache
]
]: 実際にはキャッシュを行わない、キャッシュの代替を提供します。このコンポーネントの目的は、キャッシュが利用できることをチェックするためのコードを簡略化することです。たとえば、開発中やサーバに実際のキャッシュサポートがない場合に、このキャッシュコンポーネントを使用することができます。そして、実際のキャッシュサポートが有効になったときに、対応するキャッシュコンポーネントに切替えて使用します。 どちらの場合も、
`Yii::$app->cache`
が null かも知れないと心配せずに、データを取得するために同じコード
`Yii::$app->cache->get($key)`
を使用できます。
*
[
[yii\caching\FileCache
]
]: キャッシュされたデータを保存するために標準ファイルを使用します。これはページコンテンツなど大きなかたまりのデータに特に適しています。
*
[
[yii\caching\FileCache
]
]: キャッシュされたデータを保存するために標準ファイルを使用します。これはページコンテントなど大きなかたまりのデータに特に適しています。
*
[
[yii\caching\MemCache
]
]: PHP の
[
Memcache
](
http://php.net/manual/ja/book.memcache.php
)
と
[
Memcached
](
http://php.net/manual/ja/book.memcached.php
)
拡張モジュールを使用します。分散型のアプリケーションでキャッシュを扱うときには最速の一つとして考えることができます (例えば、複数台のサーバ構成であったり、ロードバランサなど) 。
*
[
[yii\caching\MemCache
]
]: PHP の
[
Memcache
](
http://php.net/manual/ja/book.memcache.php
)
と
[
Memcached
](
http://php.net/manual/ja/book.memcached.php
)
拡張モジュールを使用します。分散型のアプリケーションでキャッシュを扱うときには最速の一つとして考えることができます (例えば、複数台のサーバ構成であったり、ロードバランサなど) 。
*
[
[yii\redis\Cache
]
]:
[
Redis
](
http://redis.io/
)
の key-value ストアに基づいてキャッシュコンポーネントを実装しています。(Redis の バージョン 2.6.12 以降が必要です) 。
*
[
[yii\redis\Cache
]
]:
[
Redis
](
http://redis.io/
)
の key-value ストアに基づいてキャッシュコンポーネントを実装しています。(Redis の バージョン 2.6.12 以降が必要です) 。
*
[
[yii\caching\WinCache
]
]: PHP の
[
WinCache
](
http://iis.net/downloads/microsoft/wincache-extension
)
(
[関連リンク](http://php.net/manual/ja/book.wincache.php
)
) 拡張モジュールを使用します。
*
[
[yii\caching\WinCache
]
]: PHP の
[
WinCache
](
http://iis.net/downloads/microsoft/wincache-extension
)
(
[関連リンク](http://php.net/manual/ja/book.wincache.php
)
) 拡張モジュールを使用します。
*
[
[yii\caching\XCache
]
]: PHP の
[
XCache
](
http://xcache.lighttpd.net/
)
拡張モジュールを使用します。
*
[
[yii\caching\XCache
]
]: PHP の
[
XCache
](
http://xcache.lighttpd.net/
)
拡張モジュールを使用します。
*
[
[yii\caching\ZendDataCache
]
]: キャッシュメディアして
[
Zend Data Cache
](
http://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm
)
を使用します。
*
[
[yii\caching\ZendDataCache
]
]: キャッシュメディアして
[
Zend Data Cache
](
http://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm
)
を使用します。
> ヒント: 同じアプリケーション内で異なるキャッシュを使用することもできます。一般的なやり方として、小さくとも常に使用されるデータ (例えば、統計データなど) を格納する場合はメモリベースのキャッシュストレージを使用し、大きくて使用頻度の低いデータを格納する場合はファイルベース、またはデータベースのキャッシュストレージを使用します (例えば、ページコンテンツなど) 。
> ヒント: 同じアプリケーション内で異なるキャッシュを使用することもできます。一般的なやり方として、小さくとも常に使用されるデータ (例えば、統計データなど) を格納する場合はメモリベースのキャッシュストレージを使用し、大きくて使用頻度の低いデータを格納する場合はファイルベース、またはデータベースのキャッシュストレージを使用します (例えば、ページコンテントなど) 。
## キャッシュ API <span id="cache-apis"></span>
## キャッシュ API <span id="cache-apis"></span>
...
@@ -161,7 +161,7 @@ if ($data === false) {
...
@@ -161,7 +161,7 @@ if ($data === false) {
### キャッシュの依存関係 <span id="cache-dependencies"></span>
### キャッシュの依存関係 <span id="cache-dependencies"></span>
有効期限の設定に加えて、キャッシュされたデータにはいわゆる
*キャッシュの依存関係*
の変化によって無効にすることもできます。例えば
[
[yii\caching\FileDependency
]
] はファイルの更新時刻の依存関係を表しています。依存関係が変更されたときに、対応するファイルが更新されることを意味しています。その結果、キャッシュ内で見つかった古いファイルのコンテンツは、無効とされるべきであり
[
[yii\caching\Cache::get()|get()
]
] は false を返します。
有効期限の設定に加えて、キャッシュされたデータにはいわゆる
*キャッシュの依存関係*
の変化によって無効にすることもできます。例えば
[
[yii\caching\FileDependency
]
] はファイルの更新時刻の依存関係を表しています。依存関係が変更されたときに、対応するファイルが更新されることを意味しています。その結果、キャッシュ内で見つかった古いファイルのコンテントは、無効とされるべきであり
[
[yii\caching\Cache::get()|get()
]
] は false を返します。
キャッシュの依存関係は
[
[yii\caching\Dependency
]
] 子孫クラスのオブジェクトとして表現されます。
[
[yii\caching\Cache::set()|set()
]
] でキャッシュにデータを格納する際に、関連するキャッシュの依存関係を知らせることができます。例えば、
キャッシュの依存関係は
[
[yii\caching\Dependency
]
] 子孫クラスのオブジェクトとして表現されます。
[
[yii\caching\Cache::set()|set()
]
] でキャッシュにデータを格納する際に、関連するキャッシュの依存関係を知らせることができます。例えば、
...
...
docs/guide-ja/caching-fragment.md
View file @
8e725955
...
@@ -8,15 +8,15 @@
...
@@ -8,15 +8,15 @@
```
php
```
php
if
(
$this
->
beginCache
(
$id
))
{
if
(
$this
->
beginCache
(
$id
))
{
// ... ここに生成するコンテン
ツ
を書く ...
// ... ここに生成するコンテン
ト
を書く ...
$this
->
endCache
();
$this
->
endCache
();
}
}
```
```
つまり
[
[yii\base\View::beginCache()|beginCache()
]
] と
[
[yii\base\View::endCache()|endCache()
]
] をペアにして囲み、その中にコンテン
ツ生成ロジックを書いていきます。コンテンツがキャッシュ内で見つかった場合、キャッシュされたコンテンツをレンダリングし
[
[yii\base\View::beginCache()|beginCache()
]
] は false を返します。結果として、コンテンツ生成ロジックはスキップされます。それ以外の場合はコンテンツ生成ロジックが呼ばれ、そして
[
[yii\base\View::endCache()|endCache()
]
] が呼ばれたとき生成されたコンテンツ
がキャプチャされ、キャッシュに格納されます。
つまり
[
[yii\base\View::beginCache()|beginCache()
]
] と
[
[yii\base\View::endCache()|endCache()
]
] をペアにして囲み、その中にコンテン
ト生成ロジックを書いていきます。コンテントがキャッシュ内で見つかった場合、キャッシュされたコンテントをレンダリングし
[
[yii\base\View::beginCache()|beginCache()
]
] は false を返します。結果として、コンテント生成ロジックはスキップされます。それ以外の場合はコンテント生成ロジックが呼ばれ、そして
[
[yii\base\View::endCache()|endCache()
]
] が呼ばれたとき生成されたコンテント
がキャプチャされ、キャッシュに格納されます。
[
データキャッシュ
](
caching-data.md
)
と同様に、キャッシュされたコンテン
ツ
を識別するためにユニークな
`$id`
が必要になります。
[
データキャッシュ
](
caching-data.md
)
と同様に、キャッシュされたコンテン
ト
を識別するためにユニークな
`$id`
が必要になります。
## キャッシュのオプション <span id="caching-options"></span>
## キャッシュのオプション <span id="caching-options"></span>
...
@@ -26,25 +26,25 @@ if ($this->beginCache($id)) {
...
@@ -26,25 +26,25 @@ if ($this->beginCache($id)) {
### 持続時間 <span id="duration"></span>
### 持続時間 <span id="duration"></span>
おそらくフラグメントキャッシュで通常よく使われるであろうオプションは
[
[yii\widgets\FragmentCache::duration|duration
]
] でしょう。このオプションにはコンテン
ツがどれだけの時間キャッシュ内において有効であるかを指定します。以下のコードは最大で 1 時間コンテンツ
の断片をキャッシュします:
おそらくフラグメントキャッシュで通常よく使われるであろうオプションは
[
[yii\widgets\FragmentCache::duration|duration
]
] でしょう。このオプションにはコンテン
トがどれだけの時間キャッシュ内において有効であるかを指定します。以下のコードは最大で 1 時間コンテント
の断片をキャッシュします:
```
php
```
php
if
(
$this
->
beginCache
(
$id
,
[
'duration'
=>
3600
]))
{
if
(
$this
->
beginCache
(
$id
,
[
'duration'
=>
3600
]))
{
// ... ここに生成するコンテン
ツ
を書く ...
// ... ここに生成するコンテン
ト
を書く ...
$this
->
endCache
();
$this
->
endCache
();
}
}
```
```
オプションがセットされていない場合は、デフォルトである 60 が使われ、つまり有効期限が 60 秒間のキャッシュされたコンテン
ツ
を意味します。
オプションがセットされていない場合は、デフォルトである 60 が使われ、つまり有効期限が 60 秒間のキャッシュされたコンテン
ト
を意味します。
### 依存関係 <span id="dependencies"></span>
### 依存関係 <span id="dependencies"></span>
[
データキャッシュ
](
caching-data.md#cache-dependencies
)
と同様に、キャッシュされたコンテン
ツ
の断片は依存関係を持つことができます。例えば、表示されている投稿の内容は、投稿が変更されたか否かに依存する、といった具合です。
[
データキャッシュ
](
caching-data.md#cache-dependencies
)
と同様に、キャッシュされたコンテン
ト
の断片は依存関係を持つことができます。例えば、表示されている投稿の内容は、投稿が変更されたか否かに依存する、といった具合です。
依存関係を指定するには
[
[yii\widgets\FragmentCache::dependency|dependency
]
] オプションに
[
[yii\caching\Dependency
]
] オブジェクトを指定するか、または依存関係オブジェクトを作成するための配列構成を指定します。以下のコードはコンテン
ツ
の断片が
`updated_at`
カラムの値の変化に依存していることを指定しています:
依存関係を指定するには
[
[yii\widgets\FragmentCache::dependency|dependency
]
] オプションに
[
[yii\caching\Dependency
]
] オブジェクトを指定するか、または依存関係オブジェクトを作成するための配列構成を指定します。以下のコードはコンテン
ト
の断片が
`updated_at`
カラムの値の変化に依存していることを指定しています:
```
php
```
php
$dependency
=
[
$dependency
=
[
...
@@ -54,7 +54,7 @@ $dependency = [
...
@@ -54,7 +54,7 @@ $dependency = [
if
(
$this
->
beginCache
(
$id
,
[
'dependency'
=>
$dependency
]))
{
if
(
$this
->
beginCache
(
$id
,
[
'dependency'
=>
$dependency
]))
{
// ... ここに生成するコンテン
ツ
を書く ...
// ... ここに生成するコンテン
ト
を書く ...
$this
->
endCache
();
$this
->
endCache
();
}
}
...
@@ -63,14 +63,14 @@ if ($this->beginCache($id, ['dependency' => $dependency])) {
...
@@ -63,14 +63,14 @@ if ($this->beginCache($id, ['dependency' => $dependency])) {
### バリエーション <span id="variations"></span>
### バリエーション <span id="variations"></span>
キャッシュされたコンテン
ツはいくつかのパラメータによって変化させることもできます。例えば、複数の言語をサポートしているウェブアプリケーションに対して、ビューコードの同じ部分を、異なる言語で生成することができます。現在のアプリケーションの言語に応じて、キャッシュされたコンテンツ
に変更を加えるといったことが可能になります。
キャッシュされたコンテン
トはいくつかのパラメータによって変化させることもできます。例えば、複数の言語をサポートしているウェブアプリケーションに対して、ビューコードの同じ部分を、異なる言語で生成することができます。現在のアプリケーションの言語に応じて、キャッシュされたコンテント
に変更を加えるといったことが可能になります。
キャッシュのバリエーションを指定するには
[
[yii\widgets\FragmentCache::variations|variations
]
] オプションに配列で、それぞれが特定のバリエーションの要素を表すスカラー値をセットします。例えば、言語によってキャッシュされたコンテン
ツ
を変化させるには、以下のコードを使うことができます:
キャッシュのバリエーションを指定するには
[
[yii\widgets\FragmentCache::variations|variations
]
] オプションに配列で、それぞれが特定のバリエーションの要素を表すスカラー値をセットします。例えば、言語によってキャッシュされたコンテン
ト
を変化させるには、以下のコードを使うことができます:
```
php
```
php
if
(
$this
->
beginCache
(
$id
,
[
'variations'
=>
[
Yii
::
$app
->
language
]]))
{
if
(
$this
->
beginCache
(
$id
,
[
'variations'
=>
[
Yii
::
$app
->
language
]]))
{
// ... ここに生成するコンテン
ツ
を書く ...
// ... ここに生成するコンテン
ト
を書く ...
$this
->
endCache
();
$this
->
endCache
();
}
}
...
@@ -84,7 +84,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) {
...
@@ -84,7 +84,7 @@ if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) {
```
php
```
php
if
(
$this
->
beginCache
(
$id
,
[
'enabled'
=>
Yii
::
$app
->
request
->
isGet
]))
{
if
(
$this
->
beginCache
(
$id
,
[
'enabled'
=>
Yii
::
$app
->
request
->
isGet
]))
{
// ... ここに生成するコンテン
ツ
を書く ...
// ... ここに生成するコンテン
ト
を書く ...
$this
->
endCache
();
$this
->
endCache
();
}
}
...
@@ -98,43 +98,43 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) {
...
@@ -98,43 +98,43 @@ if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) {
```
php
```
php
if
(
$this
->
beginCache
(
$id1
))
{
if
(
$this
->
beginCache
(
$id1
))
{
// ...コンテン
ツ
生成ロジック...
// ...コンテン
ト
生成ロジック...
if
(
$this
->
beginCache
(
$id2
,
$options2
))
{
if
(
$this
->
beginCache
(
$id2
,
$options2
))
{
// ...コンテン
ツ
生成ロジック...
// ...コンテン
ト
生成ロジック...
$this
->
endCache
();
$this
->
endCache
();
}
}
// ...コンテン
ツ
生成ロジック...
// ...コンテン
ト
生成ロジック...
$this
->
endCache
();
$this
->
endCache
();
}
}
```
```
ネストされたキャッシュには、異なるキャッシュオプションを設定することができます。 たとえば、上記の例における内側のキャッシュと外側のキャッシュに対して、異なる持続期間の値を設定する事が可能です。 これによって、外側のキャッシュでキャッシュされたデータが無効になった場合でも、内側のキャッシュが有効な内側の断片を提供することが可能になります。 しかし、その逆は真ではありません。 外側のキャッシュが有効であると判断された場合には、内側のキャッシュが無効になった後でも、外側のキャッシュが古くなったコンテン
ツ
のコピーを提供し続けます。 ネストされたキャッシュの持続時間や依存関係の設定を間違うと、無効になった内側のキャッシュデータが外側のキャッシュに残り続けることになるので、注意が必要です。
ネストされたキャッシュには、異なるキャッシュオプションを設定することができます。 たとえば、上記の例における内側のキャッシュと外側のキャッシュに対して、異なる持続期間の値を設定する事が可能です。 これによって、外側のキャッシュでキャッシュされたデータが無効になった場合でも、内側のキャッシュが有効な内側の断片を提供することが可能になります。 しかし、その逆は真ではありません。 外側のキャッシュが有効であると判断された場合には、内側のキャッシュが無効になった後でも、外側のキャッシュが古くなったコンテン
ト
のコピーを提供し続けます。 ネストされたキャッシュの持続時間や依存関係の設定を間違うと、無効になった内側のキャッシュデータが外側のキャッシュに残り続けることになるので、注意が必要です。
## ダイナミックコンテン
ツ
<span id="dynamic-content"></span>
## ダイナミックコンテン
ト
<span id="dynamic-content"></span>
フラグメントキャッシュを使用する際、出力全体が比較的静的で、一ヶ所ないし数ヶ所だけが例外的に動的であるというような状況に遭遇します。例えば、ページ上部にはメインメニューバーと現在のユーザの名前とが一緒に表示される場合があります。他には、リクエスト毎に実行しなければいけない PHP のコードが含まれている場合(例えば、アセットバンドルを登録するためのコード)などです。この両方の問題は、いわゆる
*ダイナミックコンテン
ツ
*
機能によって解決することができます。
フラグメントキャッシュを使用する際、出力全体が比較的静的で、一ヶ所ないし数ヶ所だけが例外的に動的であるというような状況に遭遇します。例えば、ページ上部にはメインメニューバーと現在のユーザの名前とが一緒に表示される場合があります。他には、リクエスト毎に実行しなければいけない PHP のコードが含まれている場合(例えば、アセットバンドルを登録するためのコード)などです。この両方の問題は、いわゆる
*ダイナミックコンテン
ト
*
機能によって解決することができます。
ダイナミックコンテン
ツは、それがフラグメントキャッシュの中に含まれていても、キャッシュすべきではない出力の部分を意味します。コンテンツを常に動的にするためには、外側のコンテンツ
がキャッシュから提供されている場合でも、すべてのリクエストに対して、いくつかのPHP コードを実行することにより生成しなければいけません。
ダイナミックコンテン
トは、それがフラグメントキャッシュの中に含まれていても、キャッシュすべきではない出力の部分を意味します。コンテントを常に動的にするためには、外側のコンテント
がキャッシュから提供されている場合でも、すべてのリクエストに対して、いくつかのPHP コードを実行することにより生成しなければいけません。
以下のように、ダイナミックコンテン
ツ
を目的の場所に挿入するには、キャッシュされた断片内で
[
[yii\base\View::renderDynamic()
]
] を呼び出します。
以下のように、ダイナミックコンテン
ト
を目的の場所に挿入するには、キャッシュされた断片内で
[
[yii\base\View::renderDynamic()
]
] を呼び出します。
```
php
```
php
if
(
$this
->
beginCache
(
$id1
))
{
if
(
$this
->
beginCache
(
$id1
))
{
// ...コンテン
ツ
生成ロジック...
// ...コンテン
ト
生成ロジック...
echo
$this
->
renderDynamic
(
'return Yii::$app->user->identity->name;'
);
echo
$this
->
renderDynamic
(
'return Yii::$app->user->identity->name;'
);
// ...コンテン
ツ
生成ロジック...
// ...コンテン
ト
生成ロジック...
$this
->
endCache
();
$this
->
endCache
();
}
}
```
```
[
[yii\base\View::renderDynamic()|renderDynamic()
]
] メソッドはパラメータとして PHP コードの一部を使用します。PHP コードの戻り値は、ダイナミックコンテン
ツ
として扱われます。同じ PHP コードはすべてのリクエストに対して実行されますが、囲まれている断片がキャッシュから提供されているか否かは問いません。
[
[yii\base\View::renderDynamic()|renderDynamic()
]
] メソッドはパラメータとして PHP コードの一部を使用します。PHP コードの戻り値は、ダイナミックコンテン
ト
として扱われます。同じ PHP コードはすべてのリクエストに対して実行されますが、囲まれている断片がキャッシュから提供されているか否かは問いません。
docs/guide-ja/caching-http.md
View file @
8e725955
HTTP キャッシュ
HTTP キャッシュ
============
============
前の節で説明したサーバーサイドのキャッシュに加えて、ウェブアプリケーションは、同じページコンテン
ツ
を生成し送信する時間を節約するために、クライアントサイドでもキャッシュを利用することができます。
前の節で説明したサーバーサイドのキャッシュに加えて、ウェブアプリケーションは、同じページコンテン
ト
を生成し送信する時間を節約するために、クライアントサイドでもキャッシュを利用することができます。
クライアントサイドのキャッシュを使用するには、レンダリング結果をキャッシュできるように、コントローラアクションのフィルタとして
[
[yii\filters\HttpCache
]
] を設定します。
[
[yii\filters\HttpCache
]
] は
`GET`
と
`HEAD`
リクエストに対してのみ動作し、また、それらのリクエストは 3 種類のキャッシュ関連の HTTP ヘッダを扱うことができます:
クライアントサイドのキャッシュを使用するには、レンダリング結果をキャッシュできるように、コントローラアクションのフィルタとして
[
[yii\filters\HttpCache
]
] を設定します。
[
[yii\filters\HttpCache
]
] は
`GET`
と
`HEAD`
リクエストに対してのみ動作し、また、それらのリクエストは 3 種類のキャッシュ関連の HTTP ヘッダを扱うことができます:
...
@@ -43,12 +43,12 @@ public function behaviors()
...
@@ -43,12 +43,12 @@ public function behaviors()
}
}
```
```
上記のコードは
`index`
アクションでのみ HTTP キャッシュを有効にしている状態です。投稿の最終更新時刻に基づいて
`Last-Modified`
を生成する必要があります。ブラウザが初めて
`index`
ページにアクセスすると、ページはサーバ上で生成されブラウザに送信されます。もしブラウザが再度同じページにアクセスし、その期間中に投稿に変更がない場合は、ブラウザはクライアントサイドにキャッシュしたものを使用するので、サーバはページを再生成することはありません。その結果、サーバサイドのレンダリング処理とページコンテン
ツ
の送信は両方ともスキップされます。
上記のコードは
`index`
アクションでのみ HTTP キャッシュを有効にしている状態です。投稿の最終更新時刻に基づいて
`Last-Modified`
を生成する必要があります。ブラウザが初めて
`index`
ページにアクセスすると、ページはサーバ上で生成されブラウザに送信されます。もしブラウザが再度同じページにアクセスし、その期間中に投稿に変更がない場合は、ブラウザはクライアントサイドにキャッシュしたものを使用するので、サーバはページを再生成することはありません。その結果、サーバサイドのレンダリング処理とページコンテン
ト
の送信は両方ともスキップされます。
## `ETag` ヘッダ <span id="etag"></span>
## `ETag` ヘッダ <span id="etag"></span>
"Entity Tag" (略して
`ETag`
) ヘッダはページコンテン
ツ
を表すためにハッシュを使用します。ページが変更された場合ハッシュも同様に変更されます。サーバサイドで生成されたハッシュとクライアントサイドで保持しているハッシュを比較することによって、ページが変更されたかどうか、また再送信するべきかどうかを決定します。
"Entity Tag" (略して
`ETag`
) ヘッダはページコンテン
ト
を表すためにハッシュを使用します。ページが変更された場合ハッシュも同様に変更されます。サーバサイドで生成されたハッシュとクライアントサイドで保持しているハッシュを比較することによって、ページが変更されたかどうか、また再送信するべきかどうかを決定します。
`ETag`
ヘッダの送信を有効にするには
[
[yii\filters\HttpCache::etagSeed
]
] プロパティを設定します。プロパティは ETag のハッシュを生成するためのシードを返す PHP の callable 型で、以下のようなシグネチャで構成していきます。
`ETag`
ヘッダの送信を有効にするには
[
[yii\filters\HttpCache::etagSeed
]
] プロパティを設定します。プロパティは ETag のハッシュを生成するためのシードを返す PHP の callable 型で、以下のようなシグネチャで構成していきます。
...
@@ -79,11 +79,11 @@ public function behaviors()
...
@@ -79,11 +79,11 @@ public function behaviors()
}
}
```
```
上記のコードは
`view`
アクションでのみ HTTP キャッシュを有効にしている状態です。リクエストされた投稿のタイトルとコンテン
ツに基づいて HTTP の
`Etag`
ヘッダを生成しています。ブラウザが初めて
`view`
ページにアクセスするときに、ページがサーバ上で生成されブラウザに送信されます。ブラウザが再度同じページにアクセスし、投稿のタイトルやコンテンツに変更がない場合には、サーバはページを再生成せず、ブラウザはクライアントサイトにキャッシュしたものを使用します。その結果、サーバサイドのレンダリング処理とページコンテンツ
送信の両方ともスキップされます。
上記のコードは
`view`
アクションでのみ HTTP キャッシュを有効にしている状態です。リクエストされた投稿のタイトルとコンテン
トに基づいて HTTP の
`Etag`
ヘッダを生成しています。ブラウザが初めて
`view`
ページにアクセスするときに、ページがサーバ上で生成されブラウザに送信されます。ブラウザが再度同じページにアクセスし、投稿のタイトルやコンテントに変更がない場合には、サーバはページを再生成せず、ブラウザはクライアントサイトにキャッシュしたものを使用します。その結果、サーバサイドのレンダリング処理とページコンテント
送信の両方ともスキップされます。
ETag は
`Last-Modified`
ヘッダよりも複雑かつ、より正確なキャッシング方式を可能にします。例えば、サイトが別のテーマに切り替わった場合には ETag を無効化する、といったことができます。
ETag は
`Last-Modified`
ヘッダよりも複雑かつ、より正確なキャッシング方式を可能にします。例えば、サイトが別のテーマに切り替わった場合には ETag を無効化する、といったことができます。
ETag はリクエスト毎に再評価する必要があるため、負荷の高いもの生成すると
`HttpCache`
の本来の目的を損なって不必要なオーバーヘッドが生じる場合があるので、ページのコンテン
ツ
が変更されたときにキャッシュを無効化するための式は単純なものを指定するようにして下さい。
ETag はリクエスト毎に再評価する必要があるため、負荷の高いもの生成すると
`HttpCache`
の本来の目的を損なって不必要なオーバーヘッドが生じる場合があるので、ページのコンテン
ト
が変更されたときにキャッシュを無効化するための式は単純なものを指定するようにして下さい。
> 注意: [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4) に準拠して `Etag` と `Last-Modified` ヘッダの両方を設定した場合、`HttpCache` はその両方とも送信します。また、もし `If-None-Match` ヘッダと `If-Modified-Since` ヘッダの両方を送信した場合は前者のみが尊重されます。
> 注意: [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4) に準拠して `Etag` と `Last-Modified` ヘッダの両方を設定した場合、`HttpCache` はその両方とも送信します。また、もし `If-None-Match` ヘッダと `If-Modified-Since` ヘッダの両方を送信した場合は前者のみが尊重されます。
...
...
docs/guide-ja/caching-page.md
View file @
8e725955
ページキャッシュ
ページキャッシュ
============
============
ページキャッシュはサーバサイドでページ全体のコンテン
ツ
をキャッシュすることを言います。あとで、同じページに再度リクエストがあった場合、その内容を一から再び生成させるのではなく、キャッシュから提供するようにします。
ページキャッシュはサーバサイドでページ全体のコンテン
ト
をキャッシュすることを言います。あとで、同じページに再度リクエストがあった場合、その内容を一から再び生成させるのではなく、キャッシュから提供するようにします。
ページキャッシュは
[
[yii\filters\PageCache
]
]、
[
アクションフィルタ
](
structure-filters.md
)
によってサポートされています。これは、コントローラクラスで以下のように使用することができます:
ページキャッシュは
[
[yii\filters\PageCache
]
]、
[
アクションフィルタ
](
structure-filters.md
)
によってサポートされています。これは、コントローラクラスで以下のように使用することができます:
...
@@ -25,8 +25,8 @@ public function behaviors()
...
@@ -25,8 +25,8 @@ public function behaviors()
}
}
```
```
上記のコードは、ページキャッシュが
`index`
アクションのみで使用され、そのページのコンテン
ツ
は最大 60 秒間キャッシュし、現在のアプリケーションの言語によって変化し、投稿の総数に変化があった場合キャッシュされたページが無効になる、ということを示しています。
上記のコードは、ページキャッシュが
`index`
アクションのみで使用され、そのページのコンテン
ト
は最大 60 秒間キャッシュし、現在のアプリケーションの言語によって変化し、投稿の総数に変化があった場合キャッシュされたページが無効になる、ということを示しています。
見てわかるように、ページキャッシュは
[
フラグメントキャッシュ
](
caching-fragment.md
)
ととてもよく似ています。それらは両方とも
`duration`
、
`dependencies`
、
`variations`
、そして
`enabled`
などのオプションをサポートしています。主な違いとしては、ページキャッシュは
[
アクションフィルタ
](
structure-filters.md
)
として、フラグメントキャッシュは
[
ウィジェット
](
structure-widgets.md
)
として実装されているということです。
見てわかるように、ページキャッシュは
[
フラグメントキャッシュ
](
caching-fragment.md
)
ととてもよく似ています。それらは両方とも
`duration`
、
`dependencies`
、
`variations`
、そして
`enabled`
などのオプションをサポートしています。主な違いとしては、ページキャッシュは
[
アクションフィルタ
](
structure-filters.md
)
として、フラグメントキャッシュは
[
ウィジェット
](
structure-widgets.md
)
として実装されているということです。
また、ページキャッシュと一緒に
[
ダイナミックコンテン
ツ
](
caching-fragment.md#dynamic-content
)
だけでなく
[
フラグメントキャッシュ
](
caching-fragment.md
)
も使用することができます。
また、ページキャッシュと一緒に
[
ダイナミックコンテン
ト
](
caching-fragment.md#dynamic-content
)
だけでなく
[
フラグメントキャッシュ
](
caching-fragment.md
)
も使用することができます。
docs/guide-ja/intro-yii.md
View file @
8e725955
...
@@ -11,7 +11,7 @@ Yii は何に適しているか
...
@@ -11,7 +11,7 @@ Yii は何に適しているか
Yii は汎用的なウェブプログラミングフレームワークです。
Yii は汎用的なウェブプログラミングフレームワークです。
つまり、あらゆる種類のウェブアプリケーションを PHP を使って開発するときに、Yii を使用することが出来ます。
つまり、あらゆる種類のウェブアプリケーションを PHP を使って開発するときに、Yii を使用することが出来ます。
コンポーネントベースのアーキテクチャと洗練されたキャッシュサポートを持っているため、Yii は大規模なアプリケーション、たとえば、ポータル、フォーラム、コンテン
ツ
マネージメントシステム (CMS)、電子商取引プロジェクト、RESTful ウェブサービス、等々を開発するのに特に適しています。
コンポーネントベースのアーキテクチャと洗練されたキャッシュサポートを持っているため、Yii は大規模なアプリケーション、たとえば、ポータル、フォーラム、コンテン
ト
マネージメントシステム (CMS)、電子商取引プロジェクト、RESTful ウェブサービス、等々を開発するのに特に適しています。
Yii を他のフレームワークと比べると
Yii を他のフレームワークと比べると
...
...
docs/guide-ja/runtime-responses.md
View file @
8e725955
...
@@ -177,7 +177,7 @@ public function actionOld()
...
@@ -177,7 +177,7 @@ public function actionOld()
上記のコードでは、アクションメソッドが
`redirect()`
メソッドの結果を返しています。
上記のコードでは、アクションメソッドが
`redirect()`
メソッドの結果を返しています。
前に説明したように、アクションメソッドによって返されるレスポンスオブジェクトが、エンドユーザに送信されるレスポンスとして使用されることになります。
前に説明したように、アクションメソッドによって返されるレスポンスオブジェクトが、エンドユーザに送信されるレスポンスとして使用されることになります。
アクションメソッド以外の場所では、
[
[yii\web\Response::redirect()
]
] を直接に呼び出し、メソッドチェーンで
[
[yii\web\Response::send()
]
] メソッドを呼んで、レスポンスに余計なコンテン
ツ
が追加されないことを保証すべきです。
アクションメソッド以外の場所では、
[
[yii\web\Response::redirect()
]
] を直接に呼び出し、メソッドチェーンで
[
[yii\web\Response::send()
]
] メソッドを呼んで、レスポンスに余計なコンテン
ト
が追加されないことを保証すべきです。
```
php
```
php
\Yii
::
$app
->
response
->
redirect
(
'http://example.com/new'
,
301
)
->
send
();
\Yii
::
$app
->
response
->
redirect
(
'http://example.com/new'
,
301
)
->
send
();
...
@@ -216,7 +216,7 @@ public function actionDownload()
...
@@ -216,7 +216,7 @@ public function actionDownload()
}
}
```
```
ファイル送信メソッドをアクションメソッド以外の場所で呼ぶ場合は、その後で
[
[yii\web\Response::send()
]
] メソッドも呼んで、レスポンスに余計なコンテン
ツ
が追加されないことを保証すべきです。
ファイル送信メソッドをアクションメソッド以外の場所で呼ぶ場合は、その後で
[
[yii\web\Response::send()
]
] メソッドも呼んで、レスポンスに余計なコンテン
ト
が追加されないことを保証すべきです。
```
php
```
php
\Yii
::
$app
->
response
->
sendFile
(
'path/to/file.txt'
)
->
send
();
\Yii
::
$app
->
response
->
sendFile
(
'path/to/file.txt'
)
->
send
();
...
...
docs/guide-ja/structure-assets.md
View file @
8e725955
...
@@ -163,7 +163,7 @@ JavaScript ファイルをページの head セクションにインクルード
...
@@ -163,7 +163,7 @@ JavaScript ファイルをページの head セクションにインクルード
public
$jsOptions
=
[
'position'
=>
\yii\web\View
::
POS_HEAD
];
public
$jsOptions
=
[
'position'
=>
\yii\web\View
::
POS_HEAD
];
```
```
既定では、アセットバンドルが発行されるときは、
[
[yii\web\AssetBundle::sourcePath
]
] で指定されたディレクトリの中にある全てのコンテン
ツ
が発行されます。
既定では、アセットバンドルが発行されるときは、
[
[yii\web\AssetBundle::sourcePath
]
] で指定されたディレクトリの中にある全てのコンテン
ト
が発行されます。
[
[yii\web\AssetBundle::publishOptions|publishOptions
]
] プロパティを構成することによって、この振る舞いをカスタマイズすることが出来ます。
[
[yii\web\AssetBundle::publishOptions|publishOptions
]
] プロパティを構成することによって、この振る舞いをカスタマイズすることが出来ます。
例えば、
[
[yii\web\AssetBundle::sourcePath
]
] の一個または数個のサブディレクトリだけを発行するために、アセットバンドルクラスの中で下記のようにすることが出来ます。
例えば、
[
[yii\web\AssetBundle::sourcePath
]
] の一個または数個のサブディレクトリだけを発行するために、アセットバンドルクラスの中で下記のようにすることが出来ます。
...
...
docs/guide-ja/structure-extensions.md
View file @
8e725955
...
@@ -321,7 +321,7 @@ class MyBootstrapClass implements BootstrapInterface
...
@@ -321,7 +321,7 @@ class MyBootstrapClass implements BootstrapInterface
#### 国際化と地域化 <span id="i18n-l10n"></span>
#### 国際化と地域化 <span id="i18n-l10n"></span>
あなたのエクステンションは、さまざまな言語をサポートするアプリケーションによって使われるかもしれません。
あなたのエクステンションは、さまざまな言語をサポートするアプリケーションによって使われるかもしれません。
従って、あなたのエクステンションがエンドユーザにコンテン
ツ
を表示するものである場合は、それを
[
国際化
](
tutorial-i18n.md
)
するように努めるべきです。
従って、あなたのエクステンションがエンドユーザにコンテン
ト
を表示するものである場合は、それを
[
国際化
](
tutorial-i18n.md
)
するように努めるべきです。
具体的には、
具体的には、
-
エクステンションがエンドユーザに向けたメッセージを表示する場合は、翻訳することが出来るようにメッセージを
`Yii::t()`
で包むべきです。
-
エクステンションがエンドユーザに向けたメッセージを表示する場合は、翻訳することが出来るようにメッセージを
`Yii::t()`
で包むべきです。
...
...
docs/guide-ja/structure-filters.md
View file @
8e725955
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
フィルタは、
[
コントローラアクション
](
structure-controllers.md#actions
)
の前 および/または 後に走るオブジェクトです。
フィルタは、
[
コントローラアクション
](
structure-controllers.md#actions
)
の前 および/または 後に走るオブジェクトです。
例えば、アクセスコントロールフィルタはアクションの前に走って、アクションが特定のエンドユーザだけにアクセスを許可するものであることを保証します。
例えば、アクセスコントロールフィルタはアクションの前に走って、アクションが特定のエンドユーザだけにアクセスを許可するものであることを保証します。
また、コンテン
ツ圧縮フィルタはアクションの後に走って、レスポンスのコンテンツ
をエンドユーザに送出する前に圧縮します。
また、コンテン
ト圧縮フィルタはアクションの後に走って、レスポンスのコンテント
をエンドユーザに送出する前に圧縮します。
フィルタは、前フィルタ (アクションの
*前*
に適用されるフィルタのロジック) および/または 後フィルタ (アクションの
*後*
に適用されるフィルタ) から構成されます。
フィルタは、前フィルタ (アクションの
*前*
に適用されるフィルタのロジック) および/または 後フィルタ (アクションの
*後*
に適用されるフィルタ) から構成されます。
...
...
docs/guide-ja/structure-widgets.md
View file @
8e725955
...
@@ -40,8 +40,8 @@ use yii\jui\DatePicker;
...
@@ -40,8 +40,8 @@ use yii\jui\DatePicker;
])
?>
])
?>
```
```
ウィジェットの中には、コンテン
ツ
のブロックを受け取ることが出来るものもあります。
ウィジェットの中には、コンテン
ト
のブロックを受け取ることが出来るものもあります。
その場合、コンテン
ツ
のブロックは
[
[yii\base\Widget::begin()
]
] と
[
[yii\base\Widget::end()
]
] の呼び出しの間に包むようにしなければなりません。
その場合、コンテン
ト
のブロックは
[
[yii\base\Widget::begin()
]
] と
[
[yii\base\Widget::end()
]
] の呼び出しの間に包むようにしなければなりません。
例えば、次のコードは
[
[yii\widgets\ActiveForm
]
] ウィジェットを使ってログインフォームを生成するものです。
例えば、次のコードは
[
[yii\widgets\ActiveForm
]
] ウィジェットを使ってログインフォームを生成するものです。
このウィジェットは、
`begin()`
と
`end()`
が呼ばれる場所で、それぞれ、開始と終了の
`<form>`
タグを生成します。
このウィジェットは、
`begin()`
と
`end()`
が呼ばれる場所で、それぞれ、開始と終了の
`<form>`
タグを生成します。
その間に置かれたものは全てそのままレンダリングされます。
その間に置かれたものは全てそのままレンダリングされます。
...
@@ -66,7 +66,7 @@ use yii\helpers\Html;
...
@@ -66,7 +66,7 @@ use yii\helpers\Html;
```
```
[
[yii\base\Widget::widget()
]
] がウィジェットのレンダリング結果を返すのとは違って、
[
[yii\base\Widget::begin()
]
] メソッドがウィジェットのインスタンスを返すことに注意してください。
[
[yii\base\Widget::widget()
]
] がウィジェットのレンダリング結果を返すのとは違って、
[
[yii\base\Widget::begin()
]
] メソッドがウィジェットのインスタンスを返すことに注意してください。
返されたウィジェットのインスタンスを使って、ウィジェットのコンテン
ツ
を構築することが出来ます。
返されたウィジェットのインスタンスを使って、ウィジェットのコンテン
ト
を構築することが出来ます。
## ウィジェットを作成する <span id="creating-widgets"></span>
## ウィジェットを作成する <span id="creating-widgets"></span>
...
@@ -75,7 +75,7 @@ use yii\helpers\Html;
...
@@ -75,7 +75,7 @@ use yii\helpers\Html;
通常、
`init()`
メソッドはウィジェットのプロパティを正規化するコードを含むべきものであり、
`run()`
メソッドはウィジェットのレンダリング結果を生成するコードを含むべきものです。
通常、
`init()`
メソッドはウィジェットのプロパティを正規化するコードを含むべきものであり、
`run()`
メソッドはウィジェットのレンダリング結果を生成するコードを含むべきものです。
レンダリング結果は、直接に "echo" しても、
`run()`
の返り値として文字列として返しても構いません。
レンダリング結果は、直接に "echo" しても、
`run()`
の返り値として文字列として返しても構いません。
次の例では、
`HelloWidget`
が
`message`
プロパティとして割り当てられたコンテン
ツ
を HTML エンコードして表示します。
次の例では、
`HelloWidget`
が
`message`
プロパティとして割り当てられたコンテン
ト
を HTML エンコードして表示します。
プロパティがセットされていない場合は、デフォルトとして "Hello World" を表示します。
プロパティがセットされていない場合は、デフォルトとして "Hello World" を表示します。
```
php
```
php
...
@@ -112,7 +112,7 @@ use app\components\HelloWidget;
...
@@ -112,7 +112,7 @@ use app\components\HelloWidget;
<?=
HelloWidget
::
widget
([
'message'
=>
'おはよう'
])
?>
<?=
HelloWidget
::
widget
([
'message'
=>
'おはよう'
])
?>
```
```
下記は
`HelloWidget`
の変種で、
`begin()`
と
`end()`
の間に包まれたコンテン
ツ
を受け取り、それを HTML エンコードして表示するものです。
下記は
`HelloWidget`
の変種で、
`begin()`
と
`end()`
の間に包まれたコンテン
ト
を受け取り、それを HTML エンコードして表示するものです。
```
php
```
php
namespace
app\components
;
namespace
app\components
;
...
@@ -149,13 +149,13 @@ use app\components\HelloWidget;
...
@@ -149,13 +149,13 @@ use app\components\HelloWidget;
?>
?>
<?php
HelloWidget
::
begin
();
?>
<?php
HelloWidget
::
begin
();
?>
... タグを含みうるコンテン
ツ
...
... タグを含みうるコンテン
ト
...
<?php
HelloWidget
::
end
();
?>
<?php
HelloWidget
::
end
();
?>
```
```
場合によっては、ウィジェットが大きな固まりのコンテン
ツ
を表示する必要があるかもしれません。
場合によっては、ウィジェットが大きな固まりのコンテン
ト
を表示する必要があるかもしれません。
コンテン
ツを
`run()`
メソッドの中に埋め込むことも出来ますが、より良い方法は、コンテンツ
を
[
ビュー
](
structure-views.md
)
コンテン
トを
`run()`
メソッドの中に埋め込むことも出来ますが、より良い方法は、コンテント
を
[
ビュー
](
structure-views.md
)
の中に置いて、
[
[yii\base\Widget::render()
]
] を呼んでレンダリングすることです。
の中に置いて、
[
[yii\base\Widget::render()
]
] を呼んでレンダリングすることです。
例えば、
例えば、
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment