2011-07-03 187 views
2

Greerings所有壓縮數據和解壓在javascript

有沒有辦法來壓縮從PHP(服務器)發送的數據,然後使用JavaScript(客戶端)解壓縮的數據?

感謝你

+3

你可以'gzip'響應,並讓瀏覽器解壓(即在HTTP協議級別的作品)。或者是否有你想用JS解壓縮的特定原因? Afaik你必須自己實現邏輯(或者找到一些第三方庫)。 –

回答

2

是;如果您配置您的服務器就可以提供數據,它希望您發送像JSON一個健全的格式,使用GZIP壓縮,那麼你可以做在JavaScript的Ajax調用,它會被瀏覽器自動解壓縮。

要這樣設置,複製these lines到您的.htaccess文件。 (我假設你使用的是Apache,因爲這是服務PHP的最常見的平臺。)

+0

這相當於在php中壓縮和解壓縮。畢竟ajax調用將依次執行php。 –

+2

這在PHP中如何等同於壓縮和解壓縮?解壓是在客戶端完成的---通過瀏覽器,而不是JavaScript,但肯定不是通過PHP。 – Domenic

+0

瀏覽器只是要求服務器調用PHP函數(或ASP/JSP的可能)。 AJAX調用通過javascript在客戶端啓動,但僅在服務器端結束。 –

3

我在這裏與@ Domenic的答案一致。 @Nishchay Sharma離開了。

我補充一點的是,如果你想這樣做對每個腳本的基礎上,而不是配置您的整個服務器壓縮一切,這是微不足道的使用PHP的gzencode()函數再加上,以實現自己的目標標題號召:

http://www.php.net/manual/en/function.gzencode.php

舉例來說,假設你是通過Ajax調用PHP頁面獲取巨大的數據集。你可以配置PHP頁面使用gzencode如下:

<?php 
$someBigString = gzencode('blahblah...blah'); 

header("Content-type: text/javascript"); 
header('Content-Encoding: gzip'); 

echo $someBigString; 
?> 

(這是過於簡化了,當然,但我保持簡單)

你的JS Ajax調用會拉下來的數據,請參閱gzip標題,並自動解壓縮它。我個人將這種技術用於Google地圖的非常大的地理座標數據集,這些數據集在解壓縮時可以有很多兆字節的大小。它不會更容易!

+0

非常感謝您節省下來的一天:) –