Aller au contenu

Evangun

Actif
  • Compteur de contenus

    28
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par Evangun

  1. Bonsoir à tous, je pense que 1&1 ne changera pas sa politique d'avoir des CNAME en moins de 30 caractères d'après ce que j'ai lu sur des forums anglais ! Donc j'ai opté pour la solution n°2, et j'ai désormais un CNAME de type xxx.cloudfront.net, qui est suffisamment court. Tout marche parfaitement. Merci Jacques pour l'info, je ne connaissais pas CloudFront, c'est puissant et ça devrait même me faire faire des économies par rapport à S3 seul. Bonne soirée à tous.
  2. Bonsoir Jacques et merci pour ta réponse. Je crois que tu m'as mis sur la piste pour trouver ma réponse. Le bucket a été créé il y a deux jours déjà, je pense que ce n'est pas exactement le problème. Mais la redirection vient effectivement d'Amazon parce que mon CNAME est static.monsite.s3.amazonaws.com alors qu'il faudrait que ce soit : static.monsite.com.s3-external-3.amazonaws.com Mais c'est là que les problèmes commencent ! car cette dernière url est trop longue pour 1&1 qui la refuse comme CNAME. Même a.monsite.com.s3-externalxxxxx est trop long. Et quand on veut faire une redirection d'un sous-domaine par CNAME, c'est Amazon qui oblige à ce que le nom de domaine soit présent dans le nom du bucket (bucketname.monsite.com), donc je ne peux pas m'en sortir en faisant un nom de bucket plus court. Conclusion: si je veux faire sauter cette redirection 307, voici les différentes options : - 1&1 doit accepter des CNAME plus long (je vais leur envoyer un mail) - je trouve un CNAME valide plus court à leur envoyer (je vais voir si CloudFront fournit des url plus courtes, merci pour le tuyau Jacques) - je me trouve un serveur DNS quelque part qui me permettra de faire l'intermédiaire entre 1&1 et S3, mais cela fera une boucle DNS supplémentaire pour les visiteurs Si vous pensez que j'ai loupé quelque chose, n'hésitez pas. Je reviendrai dire si je trouve mon bonheur avec CloudFront. Merci !
  3. Bonjour à tous, je reviens poser des questions associées au CNAME car je ne trouve pas les réponses ailleurs... Ce qui se passe pour l'instant c'est que static.monsite.com est censé être un CNAME d'un "bucket" Amazon S3. Or, quand mon navigateur va chercher une image sur static.monsite.com, il tombe sur une redirection temporaire 307, et ensuite il va chercher l'image à l'url réelle du "bucket". Donc les questions: - est-ce le comportement normal d'un CNAME ? - les headers http renvoyés par static.monsite.com avant la redirection ne mentionnent pas de Cache-control, donc les requêtes sont refaites à chaque fois sur les DNS. Une fois que le navigateur sait qu'il est redirigé vers le fichier du bucket, il voit qu'il a le fichier et le sert à partir du cache. Donc dans l'histoire, il y a une requête à static.monsite.com qui ne sert à rien. Peut-on éviter ça ? - Y a-t-il un impact au niveau du SEO à n'utiliser que des images qui sont sur un CDN, derrière une redirection temporaire 307 ? - Si je choisis de changer les liens des images pour le faire pointer directement vers le CDN, cela a-t-il un impact pour le référencement ? Ci-dessous le relevé de Firebug. Merci beaucoup !
  4. Ah très bien, merci pour ta réponse, cela me rassure Bonne journée !
  5. Bonjour à tous, j'ai fait une redirection de static.monsite.com vers un CDN (Amazon S3) qui héberge mes images etc, pour ne pas que le serveur de mon site (mutualisé) soit surchargé (juste au cas où). Mais une question me vient... est-ce qu'un appel au sous-domaine static.monsite.com est considéré comme un hit par l'hébergeur ? Car après tout cela passe quand même par le serveur DNS de l'hébergeur avant d'être redirigé. Je suis chez 1&1. Merci !
  6. Je vais suivre vos conseils de mettre le CSS en ligne dans les balises. Par contre, étant donné que les propriétés sont changeantes (je veux pouvoir appliquer un "thème" en particulier sur le texte affiché), il y aura un tout petit peu de JS pour choisir tel ou tel jeu de CSS à injecter dans le code. Ce n'est pas plus mal, ça permet de centraliser le CSS au début de mon script dans un tableau javascript. Le résultat sera dispo dans mon webservice dans quelques jours Merci encore pour vos idées.
  7. D'accord, merci pour vos réponses !
  8. La manière propre d'utiliser le CSS, c'est de le mettre dans le header car sinon, une modification d'une propriété entraîne la modification de chaque balise qui la porte... enfin ce n'est pas moi qui vais t'apprendre l'intérêt de séparer le contenu de la mise en forme n'est-ce pas Mais bon, avec une fonction maison getElementsByClassName ça doit être faisable plus ou moins proprement. Je vais considérer cette option, merci.
  9. Merci pour ta réponse Dadou ! Je n'écris que des règles qui sont préfixées qz_ donc il y a peu de chances que j'écrase les règles du site distant, si ? Ca me paraît crade de revenir à l'affichage en ligne au lieu du CSS... ou alors il me faudrait une fonction javascript qui irait le rajouter inline à ma place... tu connais une telle fonction ? Merci !
  10. Bonjour, personne n'a essayé ou réussi à le faire ? J'ai vu une technique qui permet de modifier directement la définition d'une règle CSS (pas juste la redéclarer) en passant par le document.stylesheets mais je ne sais pas encore si ça marche sur un site distant... Je vais essayer et je vous dirai ce que ça donne. Par contre, si c'est le cas, ça laisse présager la nécessité de créer une classe qui parsera du CSS normal pour injecter chaque propriété via une commande javascript... trop galère quoi... Si vous avez d'autres idées n'hésitez pas !! Merci
  11. Bonjour à tous, je suis en train de construire un fichier javascript qui pourra être appelé depuis n'importe quel site distant et qui y écrira un texte et des images. Le souci c'est que le texte en question, je veux le mettre en forme. Je me suis dit que j'allais éviter de faire en sorte que le JS appelle à son tour un fichier CSS, histoire de ne pas provoquer un hit supplémentaire sur mon site. J'ai donc mis le CSS et le JS dans le même fichier, et le JS est chargé de créer une balise style (createElement), de lui faire un innerHTML avec le CSS, et de la mettre dans le <head>. Avec Firefox et Opéra, c'est nickel, mais pour IE et Safari, c'est le drame ! J'imagine qu'ils ne laissent pas le JS accéder directement au feuilles de style... enfin je ne sais pas trop. Savez-vous comment résoudre le problème en gardant 1 seul fichier qui inclut JS et CSS ? Merci beaucoup !
  12. Ha mais ça c'est parce que j'ai simplifié le code, toutes ces choses ont une utilité en réalité
  13. Extraordinaire ! on dirait que tu as trouvé sans forcer en plus, bravo ! Je ne sais pas comment te remercier je vais devoir faire des modifs dans plusieurs de mes pages pour m'adapter à ce que tu as trouvé Je ne sais pas ce que tu trouves bizarre, j'ai essayé de rester simple et logique pourtant ? Si c'est le fait de cloner l'image qui te trouble, en fait je fais ça pour avoir la véritable taille de l'image et non celle qui lui est donnée par CSS (offsetheight me renvoie aussi cette taille CSS). Merci encore!
  14. Bonsoir ! Voilà je n'ai pas eu le temps de la faire aujourd'hui mais ça y est : />http://quizity.com/webhub/test.html Si tu appuies sur le bouton 2 avant que l'image 1 soit en noir et blanc, ça l'empêchera de fonctionner. Merci !
  15. Bonsoir SStephane et merci, ma fonction 1 (--> details) regarde si telle balise img existe déjà dans la page. Si ce n'est pas le cas, elle la crée et appelle la fonction 2 (--> qz_grayscale_test) en la lui passant en argument : var dzidx = 1; function details(creation_id){ logo = document.getElementById("im_"+creation_id); if(!logo){ di = document.getElementById("demoimg_"); di.innerHTML += "<img id=\"im_\"+creation_id+"" src=\"image_"+creation_id+".jpg\"/>"; logo = document.getElementById("im_"+creation_id); qz_grayscale_test(logo); } //put the current logo on top of the others logo.style.zIndex = dzidx; dzidx++; } Remarque: j'ai un peu simplifié les trucs pas importants, j'espère ne pas avoir laissé de petite incohérence La deuxième fonction regarde juste si l'image correspond à une valeur enregistrée dans un cookie et la passe à une troisième fonction si c'est le cas : function qz_grayscale_test(obj){ //see into the cookie if the logo should be black and white gs = obj.src; if(gs){ gs = gs.replace(/.*\\/images\\/([a-z]+)\\/[0-9]+\\/([0-9]+)\\/logo.jpg$/g, "$1:$2"); gs = gs.split(":"); if(gs[0]=="quiz") gs[0]=1; if(gs[0]=="test") gs[0]=2; if(gs[0]=="poll") gs[0]=3; gt = qz_cookie_read("qzci_"+gs[0]); if(gt) { gt = gt.split(":"); for(gti in gt){ //if we find it the cookie values if(gt[gti] === gs[1]){ qz_grayscale(obj); } } } } } la fonction 3 (--> qz_grayscale) crée un double de l'image et passe le relais à la fonction 4 (sous Firefox) qui s'exécutera quand ce double sera chargé (.onload) : //transform a picture into a black & white version (grayscaling) function qz_grayscale(oImg){ if(!oImg.grayscaled){ oImg.grayscaled = true; if(IE){ oImg.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayScale=1)"; } else{ oImg.cloneImg = new Image; oImg.cloneImg.onload = function(){ qz_grayscale2(oImg); }; oImg.cloneImg.src = oImg.src; } } } pour finir, la fonction 4 calcule la version noir et blanc du double et doit la mettre dans l'attribut src de l'image d'origine : function qz_grayscale2(oImg){ var canvas = document.createElement("canvas"); var canvasContext = canvas.getContext("2d"); imgW = oImg.cloneImg.width; imgH = oImg.cloneImg.height; canvas.width = imgW; canvas.height = imgH; canvasContext.drawImage(oImg.cloneImg, 0, 0); var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH); for(y = 0; y < imgPixels.height; y++){ for(x = 0; x < imgPixels.width; x++){ i = (y * 4) * imgPixels.width + x * 4; avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3; imgPixels.data[i] = avg; imgPixels.data[i + 1] = avg; imgPixels.data[i + 2] = avg; } } canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height); oImg.src = canvas.toDataURL(); } Mais je répète que ça foire **uniquement** quand les fonctions sont re-appelées avant que le onload qui déclenche la 4ème fonction se déclenche. Le timeout que j'ai évoqué avant m'a permis d'agrandir le délai avant l'éxécution de ce onload et constater que c'était bien ce laps de temps qui pose problème. Dernière chose : dans la 4ème fonction, la preuve qu'il connait l'objet sans pouvoir y accéder directement (uniquement quand les fonctions ont été rappelées) pour lui assigner une nouvelle src, c'est que si je remplace ceci : oImg.src = canvas.toDataURL(); par cela : document.getElementById(oImg.id).src = canvas.toDataURL(); là ça fonctionne bien ! Même un alert(oImg.src) dans la 4è fonction me renvoie toujours la valeur actuelle de src (donc ça marche pour "lire") alors que oImg.src = canvas.toDataURL() juste après ne fonctionne pas (donc ça foire pour "écrire"). Alors soit vous me dites que je n'ai pas tout compris au fonctionnement des objets dans les fonctions, soit vous me dites que c'est une histoire de fous et je vous fais une URL pour tester par vous-mêmes
  16. Bonsoir à tous, il y a quelque chose que je ne comprends pas sur la façon dont Javascript traite les objets passés dans les fonctions et je ne trouve pas de doc... J'ai plusieurs fonctions qui font ça en gros : function fonc_1(obj){ fonc_2(obj); } function fonc_2(obj){ setTimeout("alert(obj.src); obj.src = 'truc.jpg'", 5); } Donc si ma première image de la page est machin.jpg et que je fais fonc1(document.images[0]); j'obtiens le message "machin.jpg" et machin.jpg est transformé en truc.jpg au bout de 5 secondes. Tout va bien. Par contre, si pendant l'intervalle des 5 secondes j'ai le malheur d'appeler la fonction de nouveau (par exemple fonc1(document.images[1])), au bout des 5 secondes j'obtiens le message "machin.jpg" mais machin.jpg n'est plus transformé en truc.jpg. Tout se passe comme si l'objet et ses propriétés étaient bien définis au moment de l'éxécution du Timeout, mais que le Javacript s'était emmêlé les pinceaux et ne retrouve plus l'objet dans la page. J'ai tenté des tas de choses pendant 24h, je n'en peux plus là... Merci !
  17. Bon, je ne m'en sortais pas sans enchaîner les redirections. Faire passer les &, # etc en urlrewriting est vraiment galère, si quelqu'un connait la solution ce ne serait pas de refus. J'ai contourné le problème en encodant ces caractères avant même la soumission du formulaire (qui finalement n'existe plus, j'en fais une redirection javascript) avec du javascript. Du coup à la fin il n'y qu'eux qui sont doublement encodés dans l'url finale, tant pis pour eux ! Ca ressemble à ça : function menusearch_submit(){ ms = document.getElementById("menusearch"); document.location.href = "/search/all/relevance/1/"+search_encode(ms.value); return false; } function search_encode(sc){ //première séquence d'encodage sc = sc.replace(/&/g, "%26"); sc = sc.replace(/#/g, "%23"); sc = sc.replace(/\+/g, "%2B"); sc = sc.replace(/\//g, "%2F"); sc = sc.replace(/\\/g, "%5C"); //deuxième séquence d'encodage (s'occupe d'autres caractères comme "?") return(encodeURIComponent(sc)); } et dans l'htaccess je n'ai gardé que ça finalement: RewriteRule ^search/(all|quiz|test|poll|tag)/(relevance|date|rating|popular)/([0-9]+)/(.*)$ /search.php?type=$1&sort=$2&page=$3&sw=$4 [L] Voilà, merci à ceux qui ont tenté de m'aider
  18. J'ai un peu avancé : en mettant [NE] à la fin de la première règle, les caractères ne sont plus doublement échappés mais du coup ça pose problème au parseur pendant la deuxième règle lorsqu'il y a une esperluette "&". Du coup, entre les deux, j'essaie de remplacer les & par %26 : RewriteCond %{QUERY_STRING} ^query=(.*)$ RewriteRule ^search/$ /search/%1? [R=301,NE] RewriteRule ^search/(.*)&(.*)$ /search.php?query=$1\%26$2 RewriteRule ^search/(.*)$ /search.php?query=$1 [L] Ma nouvelle règle me donne le résultat voulu mais uniquement s'il n'y a pas plus d'un seul &. Connaissez-vous une règle qui me permettrait de remplacer tous les & ? Merci !
  19. Merci pour ces éclaircissements Jean-Luc. As-tu alors une idée sur comment obtenir au final /search/bonnie+%26+clyde plutôt que /search/bonnie+%2526+clyde ? Si je n'y arrive pas (mais Dailymotion y arrive ), je ne sais pas s'il ne vaut mieux pas laisser sous la forme /search/?query=bonnie+%26+clyde en sachant qu'il y a d'autres paramètres qui ont été rewrités sinon ça ne servirait à rien bien sûr... qu'en pensez-vous, c'est aussi efficace pour le référencement ?
  20. Hello Ams51 et merci, je viens d'essayer ta proposition mais cela ne fonctionne pas. Pour traiter une variable get en urlrewriting, on est obligé de passer par une condition car une rewriterule est incapable de l'attraper dans son pattern.
  21. Mon sujet précédent a été effacé, est-ce que j'ai dit qqch de mal, ou pas posté au bon endroit ? en tout cas, merci à Ams51 et Jean-Luc pour vos réponses rapides. Je réexplique le problème rapidement : j'ai un formulaire qui renvoie vers monsite.com/search/?query=blabla Donc je fais une première règle d'urlrewriting qui renvoie vers l'URL que verra l'internaute et les moteurs de recherche : monsite.com/search/blabla puis une deuxième règle qui renvoie vers la véritable page php pour le traitement des données : monsite.com/search.php?query=blabla Jusqu'ici ça marche, mon souci c'est que les deux règles ne s'enchaînent pas d'affilée: les deux règles semblent s'exécuter au cours de 2 appels distincts à Apache, et je trouve ça crade. Ams51, cela ne fonctionne pas, les règles ignorent les query strings. D'ailleurs en l'état, la règle marche bien, ce qui m'embête c'est qu'elle ne s'enchaîne pas avec l'autre. Jean-Luc, effectivement je ne suis pas sûr d'avoir un "problème", si ça se trouve c'est le fonctionnement normal... mais peut-être pas. Là, en l'état actuel des choses, il applique 1 règle au premier passage et une deuxième au deuxième passage. Pourquoi pas les deux en même temps ? Ceci dit, ça me pose une autre question : une redirection 301 implique-t-elle forcément un deuxième hit -> est-ce que le serveur ne peut pas envoyer les données tout en précisant juste que l'adresse a changé ? Là où je me dis que qqch ne va pas dans ces règles, c'est que les variables de mon URL sont échappées 2 fois, sans doute à cause de ces deux passages par le htaccess. Exemple : je cherche bonnie & clyde et j'arrive sur la page /search/bonnie+%2526+clyde. Mettre un flag [NE]dans l'une ou l'autre des règles ne fonctionne pas. Maintenant, regardez sur Dailymotion qui fait exactement la même chose que ce que je veux faire : on cherche bonnie & clyde et l'on arrive sur [color=#FF0000]http://www.dailymotion.com/relevance/search/bonnie+%26+clyde. Les variables n'ont été échappées qu'une fois ! Qu'ont-ils fait pour avoir ce résultat ? Merci beaucoup encore une fois! PS: pour mémoire, les règles qui ne s'enchaînent pas en une seule fois sont : RewriteCond %{QUERY_STRING} ^query=(.*)$ RewriteRule ^search/$ /search/%1? [R=301] RewriteRule ^search/(.*)$ /search.php?query=$1 [L]
  22. Hello Anonymus, merci de "remettre ça sur le tapis", c'était la question à la base après tout Pardon j'ai fait un laspsus Mo/Go Non la base commence par quelques dizaine de Mo dès le début, et quelques gigas à terme. Désolé pour la confusion. Le SQL léger, c'est parce que presque toutes mes pages sont en cache (enfin, dans un template simple à parser). J'en régénère quelques-unes toutes les 5 minutes, et les autres uniquement quand il y a modif. C'est donc pour les login + nouvelles créations et pour la recherche que le SQL est utilisé, c'est ce que j'appelle "assez léger", dans le sens où ça n'intervient pas sur beaucoup de pages. Perso j'ai déjà travaillé sur des bases de 100 Mo avec jusqu'à 4000 visiteurs par jour sur un petit serveur OVH, et tout marchait parfaitement bien (même en désactivement le moteur cache ça tenait assez bien le coup), mais je n'ai franchement aucune idée de si ça tiendra si on multiplie ça par 10... Le moindre petit select de rien du tout deviendra-t-il pénible si c'est dans une table de 200 000 lignes ? Je pense que je vais effectivement migrer sur un Kimsufi à la première alerte de 1&1 Pour ce qui est de l'évolutivité des offres des hébergeurs, on n'a plus qu'à prier pour qu'OVH nous fasse des offres Reloaded tous les ans, mais je crois qu'il ne faut pas rêver Et pour le référencement, mon site sera en français et anglais au lancement, la version allemande sera pour un ou deux mois plus tard, et pour les autres langues on verra plus tard, en fonction du succès. Donc la question du référencement international est effectivement important :/ Chez 1&1 je suis d'ores et déjà flingué sur la recherche France de Google, puisque leurs serveurs sont en Allemagne. Mais bon, je ne sais pas s'il y a beaucoup de gens qui cochent "Recherche France" de toute façon ?
  23. Merci pour vos réponses Je vais regarder ça Capybara, je ne les connaissais pas ! Mmmh, il n'y en a aucun des trois qui mette la bande passante (en Mbps je veux dire)... mais je crois que je vais commencer sur de l'OVH ou similaire quand même, ça me rassure un peu plus, au moins eux je pourrai les appeler s'il le faut. Crazy Moto : dedibox je suis fan, le problème c'est que c'est évolutivité 0, il n'ont qu'une offre... pour un autre site c'aurait été parfait
  24. Oui, je suis pour l'instant sur du mutualisé évidemment, je ne suis pas tombé de la dernière pluie... ma question n'est pas là ! Je parle du cas où le site a énormément de trafic, c'est l'hypothèse de départ (donc fictive par définition), donc ça n'est pas utile de me dire "oui mais pour l'instant tu n'as pas beaucoup de trafic" ou "il y a des risques que tu n'aies jamais ce trafic", tu vois ce que je veux dire ? Astroboy a lancé une piste sur l'hébergement en cluster et c'est maintenant ce qui m'intéresse. Au pire si je n'ai jamais de site qui en a besoin, les infos que j'aurai apprises là-dessus seront pour ma culture personnelle
  25. En fait, ce que je voulais te dire, c'est que tu ne prends pas les bonnes priorités pour l'instant. Du succès, j'en souhaite à ton site, et je t'en souhaite à toi, mais l'important actuellement n'est pas de réfléchir à l'hébergement que tu auras dans 2 ans, mais plutôt à tout le côté commercial/publicité/promotion de ton site que tu feras pendant ces deux années pour te permettre d'avoir du monde qui vient sur ton site. Ne t'inquiète pas Sarc, j'essaie de planifier au maximum, et mon hébergement est l'une de mes préoccupations parmi bien d'autres, mais c'est important. S'il se trouve que mon site fait du buzz et que je me vois obligé de passer à autre chose que mon mutualisé, je ne veux pas être pris au dépourvu. Je me fais une feuille de route par prévoyance Tu parles de ralentissements sql 1and1 : eh bien justement, si je dois changer d'offre, je veux savoir si je peux me permettre de rester chez eux en dédié ou si c'est une impasse. Je ne veux pas m'abonner 12 mois et voir au bout de 6 mois que le serveur dédié rame et que je dois migrer, c'est trop de galères pour rien, alors qu'il aurait suffi de demander conseil à des gens compétents, comme je le fais maintenant En tout cas merci pour tes réponses sauf que, peut être, quelqu'un est en train de vouloir monter le même service révolutionnaire qui manque tant aux webmasters, vu qu'il n'a pu le trouver quand il en avait besoin Merci de ton commentaire très constructif Leonick... Je n'ai jamais dit que j'allais révolutionner le web. C'est même une demande très classique et fréquente des webmasters, mais j'essaie d'y apporter une solution meilleure que ce qui se fait actuellement, voilà tout. En espérant que personne ne l'aura fait d'ici là ne l'aura fait c'est évident ! mais si on ne faisait jamais rien parce que quelqu'un d'autre risque de le faire avant, on n'irait pas très loin dans la vie... De toute façon je ne suis pas ici pour convaincre ou vendre mon produit, je demande simplement des conseils sur comment héberger un tès gros site. Si vous avez des recommandations pour un hébergeur en cluster, je serais curieux de les connaître ! Et j'espère que ce topic servira à d'autres personnes qui, elles, en sont déjà à cette étape de leur site! Merci à tous
×
×
  • Créer...