summaryrefslogtreecommitdiff
path: root/demos/quickstart/protected/pages/Advanced/id/Performance.page
blob: 98e89644371db50b61a3933f64a9a68862e5c2e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<com:TContent ID="body" >

<h1 id="6401">Penyesuaian Performansi</h1>
<p id="810678" class="block-content">
Performansi aplikasi Web dipengaruhi oleh banyak faktor. Akses database, operasi sistem file, bandwidth jaringan adalah faktor pengaruh potensial. PRADO mencoba dalam setiap usaha untuk mengurangi akibat performansi yang disebabkan oleh kerangka kerja.
</p>

<h2 id="6402">Caching</h2>
<p id="810679" class="block-content">
PRADO menyediakan teknik cache generik yang dipakai oleh beberapa bagian inti kerangka kerja. Sebagai contoh, ketika cache dihidupkan, <tt>TTemplateManager</tt> akan menyimpan template yang diurai dalam cache dan menggunakannya kembali dalam permintaan berikut, yang menghemat waktu penguraian template. <tt>TThemeManager</tt> mengadopsi strategi yang mirip untuk berhadapan dengan penguraian tema.
</p>
<p id="810680" class="block-content">
Menghidupkan cache sangat mudah. Cukup tambahkan modul cache dalam konfigurasi aplikasi, dan PRADO memelihara semuanya.
</p>
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_810229">
&lt;modules&gt;
    &lt;module id="cache" class="System.Caching.TSqliteCache" /&gt;
&lt;/modules&gt;
</com:TTextHighlighter>

<p id="810681" class="block-content">
Para pengembang juga bisa mengambil keuntungan dari teknik cache dalam aplikasinya. Properti <tt>Cache</tt> dari <tt>TApplication</tt> mengembalikan modul cache yang dimasukan bila ia tersedia. Untuk menyimpan dan mengambil item data dari dalam cache, gunakan perintah berikut,
</p>
<com:TTextHighlighter CssClass="source block-content" id="code_810230">
if($application->Cache) {
    // menyimpan item data ke cache
    $application->Cache->set($keyName,$dataItem);
    // mengambil item data dari cache
    $dataItem=$application->Cache->get($keyName);
}
</com:TTextHighlighter>
<p id="810682" class="block-content">
di mana <tt>$keyName</tt> harus berupa string yang secara unik mengidentifikasi item data yang disimpan dalam cache.
</p>

<p id="840059" class="block-content">
Sejak v3.1.0, kontrol baru bernama <a href="?page=Controls.OutputCache">TOutputCache</a> telah diperkenalkan. Kontrol ini membolehkan para pengguna untuk men-cache bagian-bagian dari output halaman. Bila dipakai dengan benar, teknik ini bisa meningkatkan performansi halaman secara signifikan karena kontrol di dalamnya tidak dibuat sama sekali jika versi yang di-cache diminta.
</p>

<h2 id="6403">Menggunakan <tt>pradolite.php</tt></h2>
<p id="810683" class="block-content">
Banyak file naskah PHP yang disertakan dapat mempengaruhi performansi aplikasi secara signifikan. Kelas PRADO disimpan dalam file berbeda dan ketika memproses sebuah permintaan halaman, ia bisa menyertakan puluhan file kelas. Untuk mengurangi masalah ini, setiap rilis PRADO, sebuah file bernama <tt>pradolite.php</tt> juga disertakan. File ini adalah gabungan dari seluruh file kelas inti PRADO dengan komentar dan pencatatan pesannya yang sudah dibuang.
</p>
<p id="810684" class="block-content">
Untuk menggunakan <tt>pradolite.php</tt> dalam naskah entri aplikasi, ganti penyertaan <tt>prado.php</tt> dengan <tt>pradolite.php</tt>.
</p>

<h2 id="6404">Mengubah Mode Aplikasi</h2>
<p id="810685" class="block-content">
Mode aplikasi juga mempengaruhi performansi aplikasi. Aplikasi PRADO dapat berupa salah satu dari mode berikut: <tt>Off</tt>, <tt>Debug</tt>, <tt>Normal</tt> dan <tt>Performance</tt>. Mode <tt>Debug</tt> harus dipakai terutama selama pengembangan aplikasi, sementara mode <tt>Normal</tt> biasanya dipakai dalam tahap berikutnya setelah aplikasi disebarkan guna memastikan semuanya berjalan dengan baik. Setelah aplikasi terbukti bekerja stabil, selanjutnya mode bisa dialihkan ke <tt>Performance</tt> untuk meningkatkan performansi.
</p>
<p id="810686" class="block-content">
Perbedaan antara mode <tt>Debug</tt>, <tt>Normal</tt> dan <tt>Performance</tt> yaitu di bawah mode <tt>Debug</tt>, catatan aplikasi akan berisi informasi debug, dan di bawah mode <tt>Performance</tt>, pemeriksaan cap waktu tidak dilakukan untuk template yang di-cache dan asset yang dipublikasikan. Oleh karena itu, di bawah mode <tt>Performance</tt>, aplikasi mungkin tidak berjalan dengan baik jika template atau asset dimodifikasi. Karena mode <tt>Performance</tt> dipakai terutama saat aplikasi sudah stabil, mengubah template atau asset tidak disukai.
</p>
<p id="810687" class="block-content">
Untuk berganti mode aplikasi, konfigurasi itu dalam konfigurasi aplikasi:
</p>
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_810231">
&lt;application Mode="Performance" &gt;
    ......
&lt;/application &gt;
</com:TTextHighlighter>

<h2 id="6405">Mengurangi Ukuran Halaman</h2>
<p id="810688" class="block-content">
Standarnya PRADO menyimpan kondisi halaman dalam field tersembunyi dari output HTML. Kondisi halaman bisa berukuran sangat besar jika menggunakan kontrol yang kompleks, seperti <tt>TDataGrid</tt>. Guna mengurangi ukuran besarnya halaman yang dikirimkan melalui jaringan, dua strategi dapat dipakai.
</p>
<p id="810689" class="block-content">
Pertama, Anda dapat mematikan kondisi tampilan dengan menyetel <tt>EnableViewState</tt> menjadi false untuk halaman atau beberapa kontrol pada halaman jika pengguna tidak perlu berinteraksi dengan halaman/kontrol.
</p>
<p id="810690" class="block-content">
Kedua, Anda bisa menggunakan penyimpanan kondisi halaman berbeda. Sebagai contoh, kondisi halaman bisa disimpan dalam sesi, yang menyimpan kondisi halamaa terutama pada sisi server dan menghemat waktu transmisi jaringan. Properti <tt>StatePersisterClass</tt> dari halaman menentukan kelas persisten kondisi yang dipakai. Standarnya menggunakan <tt>System.Web.UI.TPageStatePersister</tt> untuk menyimpan kondisi persisten dalam field tersembunyi. Anda bisa mengubah properti ini ke kelas persisten Anda sendiri, selama kelas persister menerapkan antarmuka <tt>IPageStatePersister</tt>. Anda dapat mengkonfigurasi properti ini dalam beberapa tempat, seperti konfigurasi aplikasi atau konfigurasi halaman menggunakan tag &lt;pages&gt; or &lt;page&gt;,
</p>
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_810232">
&lt;pages StatePersisterClass="MyPersister1" ... &gt;
    &lt;page ID="SpecialPage" StatePersisterClass="MyPersister2" ... /&gt;
&lt;/pages&gt;
</com:TTextHighlighter>
<p id="810691" class="block-content">
Catatan, dalam <tt>SpecialPage</tt> di atas akan menggunakan <tt>MyPersister2</tt> sebagai kelas persisternya, sementara halaman lainnya akan menggunakan <tt>MyPersister1</tt>. Oleh karena itu, Anda dapat memiliki strategi perister kondisi untuk halaman yang berbeda.
</p>

<h2 id="6406">Teknik Lainnya</h2>
<p id="810692" class="block-content">
Teknik cache server terbukti sangat efektif meningkatkan performansi aplikasi PRADO. Sebagai contoh, kita telah mengamati bahwa dengan menggunakan Zend Optimizer, RPS (request per second) dari aplikasi PRADO bisa meningkat lebih dari sepuluh kali. Tentunya, ini merupakan harga dari output yang stabil, sementara teknik cache PRADO selalu memastikan kebenaran output.
</p>

<div class="last-modified">$Id: Performance.page 1902 2007-05-07 04:17:37Z wei $</div></com:TContent>