Maison > développement back-end > tutoriel php > PHP implémente une méthode pour déterminer si une page ou une image a été compressée par gzip

PHP implémente une méthode pour déterminer si une page ou une image a été compressée par gzip

墨辰丷
Libérer: 2023-03-27 18:44:02
original
1662 Les gens l'ont consulté

L'éditeur suivant vous apportera une méthode PHP pour déterminer si une page ou une image a été compressée par gzip. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil

Utilisez php pour déterminer si la page ou l'image a été compressée par gzip

Utilisez get_headers
.

Contenu de la page

<?php
ob_start(&#39;ob_gzhandler&#39;); // 开启gzip,屏蔽则关闭

$data = array(
 array(&#39;name&#39;=>&#39;one&#39;,&#39;value&#39;=>1),
 array(&#39;name&#39;=>&#39;two&#39;,&#39;value&#39;=>2),
 array(&#39;name&#39;=>&#39;three&#39;,&#39;value&#39;=>3)
);

header(&#39;content-type:application/json&#39;);
echo json_encode($data);
?>
Copier après la connexion

Utilisez get_headers pour déterminer s'il faut utiliser la compression gzip

<?php
$url = &#39;http://www.example.com/&#39;;
var_dump(check_gzip($url));

/**
 * 判断url是否经过gzip压缩
 * @param String $url 来源
 * @param Boolean
 */
function check_gzip($url){
 $header = get_headers($url, 1);
 if(isset($header[&#39;Vary&#39;]) && $header[&#39;Vary&#39;]==&#39;Accept-Encoding&#39;){
  return true;
 }
 return false;
}
?>
Copier après la connexion

Résultats des tests :

Lorsque ob_gzhandler est ajouté, il renvoie vrai, et lorsqu'il est supprimé, il renvoie faux

2. Utilisez curl

Images

<?php
header(&#39;content-type:image/jpeg&#39;);
ob_start(&#39;ob_gzhandler&#39;); // 开启gzip,屏蔽则关闭
echo file_get_contents(&#39;test.jpg&#39;);
?>
Copier après la connexion

Utilisez curl pour déterminer si utiliser la compression gzip

<?php
$url = &#39;http://www.example.com/&#39;;
var_dump(check_gzip($url));

/**
 * 判断url是否经过gzip压缩
 * @param String $url 来源
 * @param Boolean
 */
function check_gzip($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 1);   // 输出header信息
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 返回的信息不直接输出
 curl_setopt($ch, CURLOPT_ENCODING, &#39;&#39;);  // 不限制编码类型
 $response = curl_exec($ch);
 if(!curl_errno($ch)){
  $info = curl_getinfo($ch);
  // 获取header
  $header_size = $info[&#39;header_size&#39;];
  $header_str = substr($response, 0, $header_size);
  $filter = array("\r\n", "\r");
  $header_str = str_replace($filter, PHP_EOL, $header_str);

  // 检查content-encoding
  preg_match(&#39;/Content-Encoding: (.*)\s/i&#39;, $header_str, $matches);
  if(isset($matches[1]) && $matches[1]==&#39;gzip&#39;){
   return true;
  }
 }
 return false;
}
?>
Copier après la connexion

Résultat du test :

Quand ob_gzhandler est ajouté, il renvoie vrai, et lorsqu'il est supprimé, il renvoie faux

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

La fonction PHP convertit n'importe quel nombre en numéro de caractère chinois correspondant

Pensées causées par protected en php

PHPgroupe de capture d'expression régulière et groupe de non-capture

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal