Y a-t-il un module pour Apache / NGinx pour servir des fichiers statiques à partir d'archives (ZIP, TGZ, TBZ ...), de sorte que s'il n'y a pas de fichier dans un emplacement spécifié, puis archive est demandé à ce fichier? P>
5 Réponses :
Je soupçonnerais qu'il n'y a pas, surtout comme une relèvement lorsque des fichiers réguliers ne sont pas trouvés. Cela dit, un script CGI pour le faire serait assez simple. La perte de performance serait probablement perceptible lorsque la charge est toutefois sous charge. P>
J'utilise le script CGI et je pose ma question car il y a une perte de performance (pas très grosse, mais beaucoup plus lente que de servir des pages statiques) et ce n'est pas aussi beau qu'une directive de configuration.
Pour le cas de .tgz et .tbz, la majeure partie de la perte de performance (ESP pour les grandes archives) devrait provenir du fait que vous devez lire à partir du disque et de décompresser toutes les données jusqu'à ce que le fichier que vous avez demandé. Si vous demandez le dernier fichier dans l'archive, alors qu'il s'agisse d'un script CGI ou d'un serveur Web, quelque chose devra toujours consacrer le temps à lire, à décompresser et à jeter toutes les données d'archives pour accéder à votre fichier. P>
Le format zip permet d'accéder au hasard. Si votre script CGI est très simple (peut être un script sh, puis appelle essentiellement simplement "décompression" avec le bon argument, puis la quantité de vitesse que vous pouvez obtenir d'avoir un module de serveur serait-elle plutôt petite. P >
Cela dit, c'est un peu fou si un module pour le faire n'existe pas (mais non, je n'ai pas pu en trouver un). P>
Avec script, j'utilise zip car je connais une lenteur d'accès aléatoire d'archives goudronnées comprimées.
Je ne suis pas au courant d'un tel module. P>
Si vous écrivez le vôtre, je vous recommanderais de jeter un coup d'œil à la directive performance:
De cette façon, vous effectuez des contrôles de sécurité avec PHP, trier les robots de recherche de la recherche et peut-être même Memcache certains fichiers après leur avoir déballé, mais cela dépend de vos statistiques / schémas spécifiques. P>
Certains outils ou packages de poiriers peuvent vous permettre d'extraire des fichiers sur des tuyaux (stdout) et d'éviter que le dumping au système de fichiers ou le déballage peut se produire dans un ramdisk pour accélérer les choses. Mais encore une fois, la voie à suivre dépend de la taille de vos fichiers afin de faire quelque chose comme ça fiable. P> try_files code> http://wiki.nginx.org/httpcoremodule#try_files et remettez les arguments de demande d'un script, par exemple Un fichier PHP (voir sur la page wiki la ligne try_files se terminant par:
/index.php?q=$uri&rargs; code>). p>
Une autre possibilité peut utiliser un système de fichiers compressé, en fonction des types et de la distribution des fichiers également avec une déduplication. P>
pro: p>
-has presque le même effet als a .zip fichier .zip (sage de stockage) p>
-NO change sur la partie du serveur Web nécessaire P>
contre: p>
Possiblement neuf FS pour la ZIP DIR P>
-Maybe non présent sous OS usagé (E.G. ZFS) P>
Peut-être qu'il y a une autre façon si vous clarifiez ce que vous essayez d'atteindre. P>
Vous devez consulter Squashfs , c'est un système de fichiers compressé. p>
Vous pouvez y penser comme une archive TAR.GZ, utilisée principalement dans des ISOS LIVECD / DVD / USB, mais parfaitement applicable à votre situation. P>
ici est un howto. P>
PS: contrairement à d'autres réponses, vous n'avez pas besoin d'un système d'exploitation particulier pour utiliser Squashfs, mais si vous exécutez Solaris ou FreeBSD, optez pour ZFS compression, c'est juste génial! p>