Response Phalcon

Bagian dari siklus HTTP adalah mengembalikan respon/tanggapan kepada klien. Phalcon \ Http \ Response adalah komponen Response Phalcon yg dirancang untuk menyelesaikan tugas ini. Respon HTTP biasanya disusun oleh header dan body. Berikut ini adalah contoh dari penggunaan dasar:

<?php

//Getting a response instance
$response = new \Phalcon\Http\Response();

//Set status code
$response->setStatusCode(404, "Not Found");

//Set the content of the response
$response->setContent("Sorry, the page doesn't exist");

//Send response to the client
$response->send();

Jika Anda menggunakan full-MVC stack tidak perlu untuk membuat respon secara manual. Namun, jika Anda perlu untuk mengembalikan respon langsung dari action controller lihatlah contoh ini:

<?php

class FeedController extends Phalcon\Mvc\Controller
{

    public function getAction()
    {
        // Getting a response instance
        $response = new \Phalcon\Http\Response();

        $feed = //.. load here the feed

        //Set the content of the response
        $response->setContent($feed->asString());

        //Return the response
        return $response;
    }

}

Bekerja dengan Header 

Header merupakan bagian penting dari respon HTTP. Karena berisi informasi yang berguna tentang keadaan respon seperti status HTTP, jenis respon dan banyak lagi.

Anda dapat mengatur header dengan cara berikut:

<?php

//Setting a header by it's name
$response->setHeader("Content-Type", "application/pdf");
$response->setHeader("Content-Disposition", 'attachment; filename="downloaded.pdf"');

//Setting a raw header
$response->setRawHeader("HTTP/1.1 200 OK");

Sebuah penampung Phalcon \ Http \ Response \ Header secara internal mengelola header. Kelas ini mengambil header sebelum mengirimnya ke klien:

<?php

//Get the headers bag
$headers = $response->getHeaders();

//Get a header by its name
$contentType = $response->getHeaders()->get("Content-Type");

Membuat Redirect

Dengan Phalcon \ Http \ Response Anda juga dapat mengeksekusi HTTP redirect :

<?php

//Redirect to the default URI
$response->redirect();

//Redirect to the local base URI
$response->redirect("posts/index");

//Redirect to an external URL
$response->redirect("http://en.wikipedia.org", true);

//Redirect specifyng the HTTP status code
$response->redirect("http://www.example.com/new-location", true, 301);

Semua URI internal dihasilkan dengan menggunakan layanan ‘url’ (secara default Phalcon \ MVC \ Url ). Contoh ini menunjukkan bagaimana Anda dapat mengarahkan menggunakan rute yang telah Anda tetapkan dalam aplikasi Anda:

<?php

//Redirect based on a named route
return $response->redirect(array(
    "for" => "index-lang",
    "lang" => "jp",
    "controller" => "index"
));

Perhatikan bahwa pengalihan tidak akan menonaktifkan tampilan komponen, jadi jika ada pandangan yang terkait dengan tindakan saat ini akan dieksekusi pula. Anda dapat menonaktifkan tampilan dari controller dengan menjalankan $this->view->disable();

HTTP Cache 

Salah satu cara termudah untuk meningkatkan kinerja dalam aplikasi Anda dan mengurangi lalu lintas server menggunakan HTTP Cache. Sebagian besar browser modern mendukung HTTP cache. HTTP Cache adalah salah satu alasan banyak situs saat ini cepat.

HTTP Cache dapat diubah dalam nilai-nilai header yang berikut dikirim oleh aplikasi ketika menampilkan suatu halaman untuk pertama kalinya:

  • Expires: Dengan header ini aplikasi dapat menetapkan tanggal di masa depan atau masa lalu memberitahu browser saat halaman harus berakhir.
  • Cache-Control: header ini memungkinkan untuk menentukan berapa banyak waktu halaman harus dianggap fresh dalam browser.
  • Last-Modified: Header ini memberitahu browser yang terakhir kali situs telah diupdate menghindari halaman re-loads
  • ETag: Sebuah etag adalah sebuah identifikasi unik yang harus dibuat termasuk timestamp modifikasi dari halaman saat ini

Mengatur Waktu Kedaluwarsa Response Phalcon 

Tanggal kadaluarsa adalah salah satu cara termudah dan paling efektif untuk cache halaman di klien (browser). Mulai dari tanggal saat ini kita tambahkan jumlah waktu halaman tersebut akan disimpan dalam cache browser. Sampai waktu ini berakhir ada konten baru akan diminta dari server:

<?php

$expireDate = new DateTime();
$expireDate->modify('+2 months');

$response->setExpires($expireDate);

Komponen Respon otomatis menunjukkan tanggal dalam zona waktu GMT seperti yang diharapkan dalam header Expires .

Jika kita menetapkan nilai ini untuk tanggal di masa lalu browser akan selalu me-refresh halaman yang diminta:

<?php

$expireDate = new DateTime();
$expireDate->modify('-10 minutes');

$response->setExpires($expireDate);

Browser mengandalkan jam klien untuk menilai apakah tgl tsb telah terlewati atau belum. Jam klien dapat dimodifikasi untuk membuat halaman berakhir dan ini mungkin merupakan batasan untuk mekanisme cache ini.

Cache-Control 

Header ini menyediakan cara yang lebih aman untuk cache halaman yang disajikan. Kita hanya perlu menentukan waktu dalam hitungan detik memberitahu browser berapa lama harus menyimpan halaman dalam cache:

<?php

//Starting from now, cache the page for one day
$response->setHeader('Cache-Control', 'max-age=86400');

Efek sebaliknya (menghindari halaman caching) dicapai dengan cara ini:

<?php

//Never cache the served page
$response->setHeader('Cache-Control', 'private, max-age=0, must-revalidate');

E-Tag 

Sebuah “entity-tag” atau “E-tag” adalah sebuah identifikasi unik yang membantu browser menyadari jika halaman telah berubah atau tidak antara dua request. Identifier tersebut harus dihitung dengan mempertimbangkan bahwa ini harus berubah jika konten yang pernah disajikan sebelumnya telah berubah:

<?php

//Calculate the E-Tag based on the modification time of the latest news
$recentDate = News::maximum(array('column' => 'created_at'));
$eTag = md5($recentDate);

//Send an E-Tag header
$response->setHeader('E-Tag', $eTag);

 

Terjemahan dr Memberikan Response Pada Phalcon
http://docs.phalconphp.com/en/latest/reference/response.html