Astuces de Webmaster

1 octobre 2014

Varnish accélère vos pages, et ralentit vos devs…..

C’est la mésaventure qui m’est arrivée hier… Installer Varnish pour mettre en cache mon API, rien de sorcier me direz vous.

Oui. Bon, vous l’avez deviné, pour moi, ce fut compliqué : aucune page en cache, que des MISS !

un petit tour du côté de varnishlog, et je voyais que VCL_recv renvoyait pass. Nulle part dans mon fichier default.vcl je ne le renvoyais, et la valeur par défaut de retour de vcl_fetch est lookup…. étrange

Ensuite, dans vcl_fetch, je vois un TTL à -1.000. Pour le debug, on peut mettre ceci:

 vcl |  Copier le code |? 
01
# Varnish determined the object was not cacheable
02
if (beresp.ttl <= 0s) {
03
  set beresp.http.X-Cacheable = "NO:Not Cacheable";
04
  set beresp.http.X-TTL = beresp.ttl;
05
# You don't wish to cache content for logged in users
06
} elsif (req.http.Cookie ~ "(UserID|_session)") {
07
  set beresp.http.X-Cacheable = "NO:Got Session";
08
  return(hit_for_pass);
09
# You are respecting the Cache-Control=private header from the backend
10
} elsif (beresp.http.Cache-Control ~ "private") {
11
  set beresp.http.X-Cacheable = "NO:Cache-Control=private";
12
  return(hit_for_pass);
13
# Varnish determined the object was cacheable
14
} else {
15
  set beresp.http.X-Cacheable = "YES";
16
}

Bon je vais manger, l’après midi pas mieux, le soir, vers minuit, je trouve enfin ma réponse sur Internet : Une personne avait le problème inverse. il faisait un lookup alors qu’il aurait du avoir un pass (http://blogs.osuosl.org/gchaix/2009/12/17/varnish-lookup-at-the-end-of-vcl_recv/)

En fait, Varnish a son propre code par défaut pour chacune des fonctions, et si vous ne spécifiez pas explicitement de return dans votre vcl, varnish continue avec son propre code… En l’occurrence mon header Authentification faisait sauter le cache, comme le fait le comportement par défaut. Alors que j’avais juste un Vary sur le header concerné….

vos fonctions dans default vcl, sont donc exécutées avant le code par défaut de varnish SAUF si vous avez explicitement un return dans votre code.

21 octobre 2013

Installer Composer sur Debian/Ubuntu

Développement Web — Tags : , , Rom's @ 17:54

Pour rappel, Composer est un installateur, qui s’occupe pour vous de gérer les dépendances. Fantastique non ?

Alors, comment ça s’installe ?

On se rend dans notre dossier home (essayer de le télécharger ailleurs pourrait causer des problèmes d’écriture du type « Download failed: fopen(/path/to/composer.phar): failed to open stream: Permission denied fwrite() expects parameter 1 to be resource, boolean given »)

 shell |  Copier le code |? 
1
cd ~

Télécharger Composer :

 shell |  Copier le code |? 
1
curl -s https://getcomposer.org/installer | php

Déplacer Composer dans votre répertoire bin propre :

 shell |  Copier le code |? 
1
sudo mv composer.phar /usr/local/bin/composer

on vérifie que ça fonctionne

 shell |  Copier le code |? 
1
composer about

Pour la forme, on vérifie si on a bien la dernière version

 shell |  Copier le code |? 
1
sudo composer self-update

Pour aller plus loin avec Composer: Lire sur Evoluation.com

24 avril 2013

GAPI : GDatainsufficientPermissionsUser does not have sufficient permissions for this profile.

This could be an international matter so I prefer to post in english.

If ever you have this error using Google Analytics API : GDatainsufficientPermissionsUser does not have sufficient permissions for this profile.

It might be because you are using wrong profile ID.

Most of GA users do think the profile ID is like UA-3136460-1 or just the ID in the middle : 3136460

It’s not.

To find your profile ID, just go to your admin section of Google Analytics, click on the website you want, then click on the content (sub-site) and then on « profil parameters » ; here will be your profile ID.

With GAPI PHP class, you can use this method too:

 PHP |  Copier le code |? 
01
02
 
03
$gaResult = $ga->requestAccountData();
04
 echo '<pre>';
05
foreach($gaResult as $result)
06
{
07
  printf("%-30s %15d\n", $result, $result->getProfileId());
08
}
09
 
10

Articles plus anciens »

Romain BOYER ©2014 - Contact : boyer Arobase romain Point biz - Profil sur LinkedIn - Profil sur Google+