PDA

View Full Version : سوال: مشکل با کش شدن فایلها توسط



idocsidocs
پنج شنبه 05 بهمن 1391, 15:53 عصر
من برای کش شدن فایلها از کدهایی که در ادامه قرار دادم، استفاده می کنم.

اما وقتی از بخش ادمین سایت یه فایل رو حذف کنم و فایل جدید آپلود کنم، در صورتیکه اسم فایل تغییر نکنه این کدها باعث می شن فایلی که توی کش مرورگر ذخیره شده بود نمایش داده بشن.

از must-revalidate هم استفاده کردم ولی مشکل حل نشد.

چطور باید مشکل رو حل کنم.



# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
#ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers

# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|bmp|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(x?html?)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers

# BEGIN Turn ETags Off
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# END Turn ETags Off

# BEGIN Remove Last-Modified Header
<ifModule mod_headers.c>
Header unset Last-Modified
</ifModule>
# END Remove Last-Modified Header

MostafaEs3
پنج شنبه 05 بهمن 1391, 16:42 عصر
برای کنترل کش از این استفاده کن ::


<IfModule mod_mime.c>
AddType text/css .css
AddType application/x-javascript .js
AddType text/x-component .htc
AddType text/html .html .htm
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType text/xml .xml
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/vnd.ms-fontobject .eot
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/x-font-otf .otf
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType application/x-font-ttf .ttf .ttc
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A31536000
ExpiresByType application/x-javascript A31536000
ExpiresByType text/x-component A31536000
ExpiresByType text/html A3600
ExpiresByType text/richtext A3600
ExpiresByType image/svg+xml A3600
ExpiresByType text/plain A3600
ExpiresByType text/xsd A3600
ExpiresByType text/xsl A3600
ExpiresByType text/xml A3600
ExpiresByType video/asf A31536000
ExpiresByType video/avi A31536000
ExpiresByType image/bmp A31536000
ExpiresByType application/java A31536000
ExpiresByType video/divx A31536000
ExpiresByType application/msword A31536000
ExpiresByType application/vnd.ms-fontobject A31536000
ExpiresByType application/x-msdownload A31536000
ExpiresByType image/gif A31536000
ExpiresByType application/x-gzip A31536000
ExpiresByType image/x-icon A31536000
ExpiresByType image/jpeg A31536000
ExpiresByType application/vnd.ms-access A31536000
ExpiresByType audio/midi A31536000
ExpiresByType video/quicktime A31536000
ExpiresByType audio/mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType video/mpeg A31536000
ExpiresByType application/vnd.ms-project A31536000
ExpiresByType application/x-font-otf A31536000
ExpiresByType application/vnd.oasis.opendocument.database A31536000
ExpiresByType application/vnd.oasis.opendocument.chart A31536000
ExpiresByType application/vnd.oasis.opendocument.formula A31536000
ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
ExpiresByType application/vnd.oasis.opendocument.text A31536000
ExpiresByType audio/ogg A31536000
ExpiresByType application/pdf A31536000
ExpiresByType image/png A31536000
ExpiresByType application/vnd.ms-powerpoint A31536000
ExpiresByType audio/x-realaudio A31536000
ExpiresByType image/svg+xml A31536000
ExpiresByType application/x-shockwave-flash A31536000
ExpiresByType application/x-tar A31536000
ExpiresByType image/tiff A31536000
ExpiresByType application/x-font-ttf A31536000
ExpiresByType audio/wav A31536000
ExpiresByType audio/wma A31536000
ExpiresByType application/vnd.ms-write A31536000
ExpiresByType application/vnd.ms-excel A31536000
ExpiresByType application/zip A31536000
</IfModule>
<FilesMatch "\.(css|js|htc|CSS|JS|HTC)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML| HTM|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|XML)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx |eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi |mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|o dc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|ppt x|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma |wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX| AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|IC O|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V |MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT| OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|T AR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|X LW|ZIP)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>

idocsidocs
پنج شنبه 05 بهمن 1391, 16:48 عصر
یه توضیح می دید که کدوم قسمت کدهای من مشکل داره و کدهای شا دقیقا چیکار می کنن؟

MostafaEs3
پنج شنبه 05 بهمن 1391, 17:46 عصر
یه توضیح می دید که کدوم قسمت کدهای من مشکل داره و کدهای شا دقیقا چیکار می کنن؟

قبلش یک سوال :لبخند:
چرا ETag و Last-modified رو زدید حذف بشه از توی header ها ؟؟؟ :متفکر:

MostafaEs3
پنج شنبه 05 بهمن 1391, 17:51 عصر
درمورد کدتون فکر کنم بخاطر اینکه FileETag None باشه با اینکه مطمئن نیستم :متفکر:

MostafaEs3
پنج شنبه 05 بهمن 1391, 18:08 عصر
گمونم خودشه - اینجا نوشته ETag باعث تشویق مرورگر برای کش کردن فایلها میشه مگر اینکه سایت روی چندین سرور میزبانی شده باشه که دراینصورت بخاطر اینکه iNode ها باهم فرق میکنن مشکل ساز میشه
Last-Modified معمولا مورد استفاده قرار نمیگیره توی Header ها

و اینکه توی کدهایی که گذاشتم A31536000 به معنی 31536000 ثانیه هست که بعضی از پارامتر ها رو شامل میشه - این دقیقا کدی هست که توی افزونه ی w3 total cache وردپرس هم استفاده شده !!!

idocsidocs
پنج شنبه 05 بهمن 1391, 22:21 عصر
چرا ETag و Last-modified رو زدید حذف بشه از توی header ها ؟؟؟ :متفکر:
این دو دستور رو هم حذف کردم ولی مشکل حل نشد. راهی به ذهنتون نمی رسه؟

MostafaEs3
پنج شنبه 05 بهمن 1391, 22:38 عصر
الان دقیقا مشکل چیه ؟؟ این کدی که شما گذاشتی خیلی دقیق و کامل نیست ! ولی چیزی که من گذاشتم تقریبا کامله :لبخند:

حالا اینو ببین ::


<IfModule mod_mime.c>
AddType text/css .css
AddType application/x-javascript .js
AddType text/x-component .htc
AddType text/html .html .htm
AddType text/richtext .rtf .rtx
AddType image/svg+xml .svg .svgz
AddType text/plain .txt
AddType text/xsd .xsd
AddType text/xsl .xsl
AddType text/xml .xml
AddType video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
AddType image/bmp .bmp
AddType application/java .class
AddType video/divx .divx
AddType application/msword .doc .docx
AddType application/vnd.ms-fontobject .eot
AddType application/x-msdownload .exe
AddType image/gif .gif
AddType application/x-gzip .gz .gzip
AddType image/x-icon .ico
AddType image/jpeg .jpg .jpeg .jpe
AddType application/vnd.ms-access .mdb
AddType audio/midi .mid .midi
AddType video/quicktime .mov .qt
AddType audio/mpeg .mp3 .m4a
AddType video/mp4 .mp4 .m4v
AddType video/mpeg .mpeg .mpg .mpe
AddType application/vnd.ms-project .mpp
AddType application/x-font-otf .otf
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.text .odt
AddType audio/ogg .ogg
AddType application/pdf .pdf
AddType image/png .png
AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
AddType audio/x-realaudio .ra .ram
AddType application/x-shockwave-flash .swf
AddType application/x-tar .tar
AddType image/tiff .tif .tiff
AddType application/x-font-ttf .ttf .ttc
AddType audio/wav .wav
AddType audio/wma .wma
AddType application/vnd.ms-write .wri
AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"

## Css-JS-Htc
ExpiresByType text/css A31536000
ExpiresByType application/javascript A31536000
ExpiresByType application/x-javascript A31536000
ExpiresByType text/x-component A31536000

## Html-Text-Svg-Svgz-Xml-Xsd-Xsl-Rtf-Rtx
ExpiresByType text/html A3600
ExpiresByType text/richtext A3600
ExpiresByType image/svg+xml A3600
ExpiresByType text/plain A3600
ExpiresByType text/xsd A3600
ExpiresByType text/xsl A3600
ExpiresByType text/xml A3600

## Multimedia and files
ExpiresByType video/asf A31536000
ExpiresByType video/avi A31536000
ExpiresByType image/bmp A31536000
ExpiresByType application/java A31536000
ExpiresByType video/divx A31536000
ExpiresByType application/msword A31536000
ExpiresByType application/vnd.ms-fontobject A31536000
ExpiresByType application/x-msdownload A31536000
ExpiresByType image/gif A31536000
ExpiresByType application/x-gzip A31536000
ExpiresByType image/x-icon A31536000
ExpiresByType image/jpeg A31536000
ExpiresByType application/vnd.ms-access A31536000
ExpiresByType audio/midi A31536000
ExpiresByType video/quicktime A31536000
ExpiresByType audio/mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType video/mpeg A31536000
ExpiresByType application/vnd.ms-project A31536000
ExpiresByType application/x-font-otf A31536000
ExpiresByType application/vnd.oasis.opendocument.database A31536000
ExpiresByType application/vnd.oasis.opendocument.chart A31536000
ExpiresByType application/vnd.oasis.opendocument.formula A31536000
ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
ExpiresByType application/vnd.oasis.opendocument.text A31536000
ExpiresByType audio/ogg A31536000
ExpiresByType application/pdf A31536000
ExpiresByType image/png A31536000
ExpiresByType application/vnd.ms-powerpoint A31536000
ExpiresByType audio/x-realaudio A31536000
ExpiresByType image/svg+xml A31536000
ExpiresByType application/x-shockwave-flash A31536000
ExpiresByType application/x-tar A31536000
ExpiresByType image/tiff A31536000
ExpiresByType application/x-font-ttf A31536000
ExpiresByType audio/wav A31536000
ExpiresByType audio/wma A31536000
ExpiresByType application/vnd.ms-write A31536000
ExpiresByType application/vnd.ms-excel A31536000
ExpiresByType application/zip A31536000
</IfModule>
<FilesMatch "\.(php)$">
<IfModule mod_headers.c>
Header set Pragma "private"
Header set Cache-Control "max-age=0, private, must-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
<FilesMatch "\.(css|js|htc|CSS|JS|HTC)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML| HTM|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|XML)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx |eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi |mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|o dc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|ppt x|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma |wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX| AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|IC O|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V |MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT| OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|T AR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|X LW|ZIP)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header append Cache-Control "public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>


این کد دقیقا چیکار میکنه ؟ این کد اول type های مورد نظر رو اضافه میکنه به آپاچی - بعد بر اساس هر type یک مدت زمان Expire بهش اختصاص میده که برای (Css - Javascript - Htc) و فایلهای ثابت 31536000 ثانیه و برای (Html-Text-Svg-Svgz-Xml-Xsd-Xsl-Rtf-Rtx) توی اینجا 3600 ثانیه تعریف شده - اگه دقت کنی php جزو اینا قرار نمیگیره چون معمولا php دائما درحال تغییر هست و نیازی به کش شدن نداره

پایینتر که میای فایلها رو بر اساس نوع به چهار قسمت تقسیم کرده که البته من یک php هم بهش اضافه کردم - دراصل ETag یک پارامتر خاص رو اضافه میکنه و مرورگر هربار اون پارامتر رو چک میکنه - اگه ETag مساوی باشه با مقدار سرور از کش خونده میشه - بنابراین من فکر کنم کش توسط سرور کنترل میشه و نیازی به max-age نیست (البته مطمئن نیستما)

سایت گوگل از age بجای max-age استفاده کرده و توی خیلی از موارد اصلا cache-control نزده !! هدر های Last-Modifie و ETag نیازی به حذف شدن ندارن چون برای تعیین مدت زمان کش مهم هستن
عملا اگه این کد رو امتحان کنی باید مشکل حل بشه (البته بعد از خالی کردن کش صفحه مورد نظر که توی کروم میشه صفحه رو بدون لود کش به کمک Ctrl + F5 بالا آورد) :چشمک:

idocsidocs
پنج شنبه 05 بهمن 1391, 23:21 عصر
کد شما رو هم امتحان کردم ولی مشکل حل نشد هنوز فایلهای کش شده رو نشون می ده.

بنظرتون یه فایل htaccess توی پوشه های مقصد درست کنم و دستورات جدید رو توی اون قرار بدم مشکل حل می شه؟

MostafaEs3
شنبه 07 بهمن 1391, 20:45 عصر
کد شما رو هم امتحان کردم ولی مشکل حل نشد هنوز فایلهای کش شده رو نشون می ده.

بنظرتون یه فایل htaccess توی پوشه های مقصد درست کنم و دستورات جدید رو توی اون قرار بدم مشکل حل می شه؟

فکر نمیکنم تائیری داشته باشه ها :متفکر: کش شده فایلهایی که لود میشن ضروری هست به مدت طولانی باشه چون باعث میشه برای بار بعدی که طرف میاد فایلها سریعا لود بشه - ولی اینکه میگی فایل بعد از پاک شدن بازهم لود میشه یخورده عجیبه

idocsidocs
شنبه 07 بهمن 1391, 22:32 عصر
ولی اینکه میگی فایل بعد از پاک شدن بازهم لود میشه یخورده عجیبه
نمی دونم مشکل چیه !
حالا دوباره چک می کنم ببینم چی می شه.