参考文献:网络
一个内容传送网络或内容分发网络是一个计算机系统,我们的网站被存储,所以它的数据(图像/视频)可以从多个地点服务。然而,我不想使用任何在线付费/无报酬的CDN服务,但希望在我自己的高速服务器上设置CDN。我做了很多谷歌,但没有看到任何这样的CDN脚本,我可以安装在我的服务器。
我正在寻找这样的脚本,可以支持高级缓存控制。
如果你知道用PHP开发的任何好的CDN脚本,你能分享吗?
发布于 2013-06-05 15:27:03
这不是在PHP中完成的,而是在Apache中完成的。
我在我自己的主服务器上所做的事情(这可能就是您想要的)是为服务内容设置一个没有烹饪功能的子域,并启用缓存和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在您的主域(您不应该),只要链接到您的无炊具内容使用您指定的炊具子域,而Apache负责其余。
更新
我添加了一些我在发布这个答案后学到的东西,例如:
但是,如果您正在使用HTTPS,请记住最后一个安全问题,那就是破口。为了防止这种解密技术,您可以从显示动态内容的任何页面中删除gzip压缩(GZIPping静态内容,如静态HTML、CSS或JS仍然可以)。为了避免压缩特定的文件类型(如PHP),请将其添加到此配置开始附近的SetEnvIfNoCase指令中。
或者,您可以保持压缩启用,并使用GCM密码方法,因为入侵系列攻击密码法。尽管我不想成为“那个家伙”,但如果您想要配置这样的东西,手册确实是最好的参考。这是一个相当复杂的话题,手册在解释基本知识方面做得很好。
https://stackoverflow.com/questions/16943715
复制相似问题