Atwood Jeff ( Coding Horror renommée) était d'une horreur quand il s'est rendu compte que son serveur tombé en panne et ses données avait disparu et à cause de certaines raisons, le mécanisme de sauvegarde ne fonctionnait pas. Les données complètes de Coding Horror et le blog StackOverflow disparu.
Depuis son blog est très populaire, de nombreux systèmes d'archivage y compris le cache de Google ont des copies des pages et j'espère qu'ils ont maintenant récupéré l'ensemble des données textuelles. Le plus gros problème dans ce cas est un retour des images. Il n'y a pas beaucoup de services d'archivage qui peut avoir la sauvegarde complète des images sur le site.
Que faut-il Jeff faire maintenant?
Depuis l'horreur de codage est un blog à fort trafic, je pense qu'il ya un moyen de récupérer au moins certaines des images. (La probabilité de ce travail dépend beaucoup de la circulation sur le site et un peu de chance)
Voici les étapes:
- Configurer le serveur Web afin de renvoyer 304 pour chaque demande d'image. Le code d'état HTTP 304 signifie que le fichier n'est pas modifié et cela signifie que le navigateur va récupérer le fichier à partir de son cache si elle est présente là-bas. (Crédit: ce SuperUser réponse)
- Dans chaque page du site, ajouter un petit script pour capturer les données d'image et l'envoyer au serveur.
- Sauvegarder les données d'image sur le serveur.
- Convertir les données de pixels pour obtenir le images.Voila original!
Saisir les données de l'image
Nous allons utiliser la fonctionnalité de toile dans HTML 5 pour récupérer les données d'image.
Voici le code que vous devrez insérer dans les pages du site. Il récupère toutes les images dans la page courante, le charge sur la toile HTML, récupère les données pixel de l'image et l'envoie au serveur via un poste d'Ajax.
Ce script PHP (PHP peut sauver Jeff?
Pour être honnête, le code côté serveur est trivial) enregistre les données dans des fichiers sur le serveur. Notez que les fichiers eux-mêmes ne seront pas des images, ils ne contiennent les données de pixels de l'image. En plus de cela, nous sommes aussi sauver le nom du fichier d'origine et les dimensions de l'image. Cela signifie que nous pouvons facilement reconstituer les images originales de ces données. Les données de chaque visiteur est enregistré dans un fichier différent, juste pour s'assurer que vous disposez de suffisamment de redondance (Attention à son licenciement de remplissage de vos disques durs du serveur)
Rappelez-vous que cela est une preuve de concept de code. Vous devrez le modifier pour les utiliser dans des environnements de production régulière et pour obtenir de l'utilisation réelle de lui. Il existe de nombreuses limites à ce code. Il va sans dire que vous obtiendrez les données d'image en arrière par les utilisateurs que s'ils ont les images mises en cache dans leur navigateur. Ce script ne fonctionne que dans les dernières versions de Chrome, Firefox, Safari, Opera, etc (Ne jamais espérer qu'il fonctionne dans IE pour la prochaine décennie). En plus de cela, souvenez-vous que les données pixel sera beaucoup plus grand que la taille du fichier d'origine et vous pouvez avoir d'analyser avec soin l'utilisation de l'espace disque de ce script. (Je suppose que dans une situation d'urgence, aucune de ces questions vraiment).
Vous devez modifier l'URL de poste dans le script pour correspondre votre nom de domaine.
Enfin, j'ai testé le code et il semble fonctionner (pour moi du moins). Vous devez inclure JQuery dans les pages utilisant ce script et n'oubliez pas qu'en raison des restrictions de sécurité dans les navigateurs, vous devrez placer tous ces fichiers sous le même nom de domaine. S'il vous plaît me dire si il ya des défauts dans le Code.
[Mise à jour: modifications du code de réduire la taille du fichier de 50%. Les nombres décimaux ont été converties en hexadécimal et les espaces entre les numéros retirés. La taille des fichiers peut être encore réduite en utilisant le jeu de caractères complet.]


post Awesome!
Vous avez maintenant un autre abonné et disciple, Merci à @ RT Spolsky
Faites que deux nouveaux adeptes de cette RT.
Awesome! solution très créative, bravo
Félicitations, vous m'avez impressionné.
Très intelligent.
Vraiment impressionnant!
[...] Diovo: Obtenez des images mises en cache de vos visiteurs Vous exécutez un site Web. Grâce à une combinaison de surveillance et d'erreur, vous perdez toutes les images sur votre site web. O Noës-maintenant? Ce garçon a la solution: Retour d'un 304 pour chaque demande d'image, ce qui déclenche les navigateurs anciens visiteurs "pour charger l'image de la mémoire cache, puis en utilisant un peu de JavaScript pour saisir les données de chaque image et l'envoyer vers le serveur, qui l'enregistre. Très malin! (Tags: javascript images http php) [...]
Tout le meilleur à vos yeux, j'espère que vous obtenez est résolu et peut être devant l'ordinateur à nouveau, il est clairement un endroit où vous avez une certaine capacité
Bravo pour cette suggestion très intelligent! Mais vous pouvez aller plus loin et automatiser le processus.
Craft certains PHP qui vérifie par exemple. un paramètre de requête, s'il le trouve, ajouter une redirection vers la page. La redirection sur chaque page serait conçu de façon à former une «chaîne» si un navigateur traversera chaque page sur le site. lecteurs de Jeff pouvez ensuite cliquer sur un lien et de quitter leur navigateur pour leur mission (par exemple, du jour au lendemain).
Pour accélérer le processus, mettre la redirection en cas window.onload plutôt que d'utiliser une balise META.
cadams,
Pas besoin de redirections. Il suffit d'envoyer le navigateur une liste des fichiers manquants sur l'image. Comme vous pouvez le voir, une image peut être renvoyé à partir de n'importe quelle page!
Je sais que c'est le code POC, mais ...
Vous pouvez ajouter quelques vérifications au fichier PHP, puisque dans sa forme actuelle, il peint un grand bulls-eye sur votre site pour les exploits à distance, le téléchargement de code, etc ...
Outre les questions évidentes de sécurité et gérable, c'est absolument génial!
Superbe stunt!
A première vue, je ne pouvais pas comprendre pourquoi il est "i + = 5", pas "i + = 4» à la ligne 34.
Fin,
C'était une erreur. Il doit être "i + = 1". Rectifié maintenant.
Super cool solution.
Fantastic solution.Its vraiment génial.
[...] Disque dur s'en alla à sa dernière demeure. Un des lecteurs de Margaret Atwood a présenté une façon remarquablement élégante et intelligente de récupérer certaines de ces images de la mémoire cache du navigateur de lecteurs Horreur de codification (avec des exemples de code). C'est le genre de hack j'aime: intelligent, [...]
[...] Partagés mis en cache des images de vos visiteurs | Diovo. [...]
Bonne idée
Félicitations, vous m'avez impressionné.
Très intelligent.