À procura de um programa personalizado de rede de fornecimento de conteúdo de PHP (CDN) para o meu servidor
REF: https://en.wikipedia.org/wiki/Content_delivery_network
uma rede de distribuição de conteúdo ou rede de distribuição de conteúdo é um sistema de computadores onde o nosso site é armazenado para que os seus dados (imagens/vídeos) possam ser servidos a partir de vários locais. No entanto, eu não quero usar nenhum serviço de CDN pago/não pago online, mas gostaria de configurar CDN no meu próprio servidor de alta velocidade. Eu fiz muito google, mas não vejo nenhum script CDN que eu possa instalar no meu servidor.
Eu sou à procura de tal script que pode suportar alto nível de cache-controle.
Pode partilhar, por favor, se conhece algum bom programa de CDN desenvolvido no PHP?
1 answers
O que eu fiz no meu próprio servidor (provavelmente é o que você quer) é configurar um sub-domínio cookieless para servir conteúdo, e permitir cache e GZip. As configurações Apache a seguir estão todas localizadas em A.arquivo htaccess no diretório do site.
# GZIP compression
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(eot|ico|gif|jpe?g|php|png|ttf|svg|woff)$ no-gzip dont-vary
# Fonts on a cookieless subdomain
<FilesMatch "\.(eot|ttf|svg|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
# Cookieless Static Content
<FilesMatch "\.(css|eot|ico|gif|jpe?g|js|png|ttf|svg|woff)$">
Header unset Cookie
Header unset Set-Cookie
</FilesMatch>
# Caching
ExpiresActive On
ExpiresDefault A0
<FilesMatch "\.(eot|ico|gif|jpe?g|png|ttf|svg|woff)$">
# 2 year caching for images and stuff
ExpiresDefault A31536000
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(css|js)$">
# 1 week caching for styles and scripts
ExpiresDefault A604800
Header append Cache-Control "public"
</FilesMatch>
#Other Header Manipulation
FileETag MTime Size
Header unset X-Powered-By
AddDefaultCharset UTF-8
DefaultLanguage en-US
Desde que não se importe de cache e GZip no seu domínio primário (o que não deve fazer), basta ligar para o seu conteúdo sem cozinha usando os seus cookieless designados sub-domínio, e Apache cuida do resto.
Actualizar
Adicionei algumas coisas sobre as quais aprendi desde que postei esta resposta, tais como:
- permitir que qualquer domínio se ligue às fontes para que possam ser servidas sem cookies.
- definir o cabeçalho do ETAG, dado que deve ser definido .
- alguns outros campos de cabeçalho que não são maus de incluir/se livrar.
SetEnvIfNoCase
perto do início desta configuração.
Em alternativa, poderá manter a compressão activa e usar o método de cifra GCM
, Dado que a família de ataques de violação só funciona no CBC
método de cifra. Por Mais que eu odeie ser "aquele cara", o manual é realmente a melhor referência para isso se você quiser começar a configurar tais coisas. É um tópico bastante complicado e o manual faz um bom trabalho de explicar o básico.