参考:https ://en.wikipedia.org/wiki/Content_delivery_network
内容交付网络或内容分发网络是存储我们网站的计算机系统,因此可以从多个位置提供数据(图像/视频)。但是我不想使用任何在线付费/非付费 CDN 服务,而是想在我自己的高速服务器上设置 CDN。我做了很多谷歌,但没有看到任何可以安装在我的服务器上的 CDN 脚本。
我正在寻找可以支持高级缓存控制的脚本。
如果您知道用 PHP 开发的任何好的 CDN 脚本,您能分享一下吗?
参考:https ://en.wikipedia.org/wiki/Content_delivery_network
内容交付网络或内容分发网络是存储我们网站的计算机系统,因此可以从多个位置提供数据(图像/视频)。但是我不想使用任何在线付费/非付费 CDN 服务,而是想在我自己的高速服务器上设置 CDN。我做了很多谷歌,但没有看到任何可以安装在我的服务器上的 CDN 脚本。
我正在寻找可以支持高级缓存控制的脚本。
如果您知道用 PHP 开发的任何好的 CDN 脚本,您能分享一下吗?
这不是在 PHP 中完成的,而是在 Apache 中完成的。
我在自己的家庭服务器上所做的(这可能是您想要的)设置了一个无 cookie 的子域来提供内容,并启用缓存和 GZip。以下 Apache 配置都位于网站目录中的 .htaccess 文件中。
# 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
只要您不介意在您的主域上进行缓存和 GZip(您不应该这样做),只需使用您指定的无 cookie 子域链接到无 cookie 内容,其余的由 Apache 负责。
自发布此答案以来,我添加了一些我学到的东西,例如:
但是,如果您使用 HTTPS,还有最后一个安全问题需要记住,那就是BREACH。为了防止这种解密技术,您可以从任何显示动态内容的页面中删除 gzip 压缩(GZIPping 静态内容,如静态 HTML、CSS 或 JS 仍然可以)。为避免压缩某种文件类型(如 PHP),请将其添加SetEnvIfNoCase
到此配置开头附近的指令中。
或者,您可以保持启用压缩并使用GCM
密码方法,因为 BREACH 系列攻击仅适用于CBC
密码方法。尽管我讨厌成为“那个人”,但如果您想配置这些东西,该手册确实是最好的参考。这是一个相当复杂的话题,手册很好地解释了基础知识。