2012-03-06 14 views
10

Phải có một cái gì đó thực sự rõ ràng tôi đang thiếu, nhưng ở đây đi:Hạn chế kích thước trang HTML là 8000 ký tự là gì?

Hầu hết nội dung của trang web của chúng tôi được tạo ra bởi phía máy chủ bao gồm hoặc tải trang AJAX cuộc gọi, vì vậy kích thước của các tập tin HTML là nói chung là khá nhỏ. Tuy nhiên, khi tạo một trang thử nghiệm, mà không có bất cứ điều gì phức tạp trong nó bất cứ điều gì tôi thấy rằng nếu kích thước trang đã vượt quá 8000 ký tự máy chủ không chuyển trang.

Đây là một tập tin ví dụ:


<!DOCTYPE html> 
<html> 
<head> 
    <title>Rubbish</title> 
</head> 
<body> 
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br /> 

Lặp lại dòng cuối cùng 16 lần để cung cấp cho 17 dây chuyền hoàn chỉnh trong tổng số. Sau đó thêm phần này của một dòng:


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliq.<br /> 
</body> 
</html> 

Trên đây là tổng cộng 8001 nhân vật mà không tải với thông điệp 'Safari không thể tải trang do máy chủ bất ngờ đóng kết nối và các biến thể trên đó với Firefox và Chrome. Xóa toàn bộ điểm dừng cuối cùng hoặc bất kỳ ký tự nào khác sẽ tính số ký tự xuống và do đó trang tải như mong đợi.

Có ai có thể cho tôi một đầu mối về những gì tôi đang thiếu trong việc không thể tải một tệp đơn giản như vậy không?

AN TRẢ LỜI (loại): Rõ ràng là nó đã được mod_deflate gây ra vấn đề như vậy sau khi một số googling tôi hỏi trên serverfault nếu có ai biết làm thế nào để thay đổi kích thước tối đa. Không có câu trả lời vì vậy tôi tạo ra một tập tin vỏ và bao gồm các tập tin nhân vật ban đầu 8000 như một phía máy chủ bao gồm (SSI) và nó bây giờ hoạt động như mong đợi. Vẫn không biết tại sao có giới hạn về HTML thuần túy nhưng không có giới hạn về SSI, nhưng tôi không có thời gian để lo lắng về nó nữa.

CHỈNH SỬA: Đã xóa chỉ thị 'SetOutputFilter DEFLATE' và trang hiện tải, điều này cho thấy rằng đó thực sự là mô-đun xì hơi gây ra sự cố. Việc thêm 'DeflateBufferSize 10000' (hoặc thực sự 'DeflateBufferSize 2048') không tạo ra bất kỳ sự khác biệt nào về kích thước được hỗ trợ, vì vậy tôi sẽ đóng câu hỏi này và hỏi về module deflate trên lỗi máy chủ.

EDIT: Rất tiếc, đã đề cập rằng chúng tôi đang sử dụng Apache 2.2.17 trên Fedora 14. Đây là trên máy ảo trên máy tính xách tay của tôi nên không có yếu tố bên ngoài nào có liên quan.

EDIT: Một điều tôi nên thêm vào là không có gì trong nhật ký lỗi Apache ngay cả khi đặt loglevel để gỡ lỗi. Nhật ký truy cập cung cấp thông báo '200' nhưng với số ký tự được gửi thành '-'.

EDIT: Sau httpd.conf đã chỉnh sửa, không có tệp cấu hình nào khác. Đầu ra được xì hơi và sau đó được giải nén bởi khách hàng:

 
### Section 1: Global Environment 
ServerTokens prod 
CoreDumpDirectory /tmp 
ServerRoot "/etc/httpd" 
PidFile run/httpd.pid 
Timeout 120 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 5 
<IfModule prefork.c> 
StartServers  20 
MinSpareServers 5 
MaxSpareServers 20 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 4000 
</IfModule> 
<IfModule worker.c> 
StartServers   2 
MaxClients   150 
MinSpareThreads  25 
MaxSpareThreads  75 
ThreadsPerChild  25 
MaxRequestsPerChild 0 
</IfModule> 
Listen 80 
#SOME LOAD MODULE CONFIG LINES REMOVED 
LoadModule include_module modules/mod_include.so 
LoadModule env_module modules/mod_env.so 
LoadModule ext_filter_module modules/mod_ext_filter.so 
LoadModule expires_module modules/mod_expires.so 
LoadModule deflate_module modules/mod_deflate.so 
LoadModule headers_module modules/mod_headers.so 
LoadModule dav_module modules/mod_dav.so 
LoadModule status_module modules/mod_status.so 
LoadModule info_module modules/mod_info.so 
LoadModule dav_fs_module modules/mod_dav_fs.so 
LoadModule actions_module modules/mod_actions.so 
LoadModule cache_module modules/mod_cache.so 
LoadModule cgi_module modules/mod_cgi.so 
Include conf.d/*.conf 
ExtendedStatus Off 
User apache 
Group apache 
### Section 2: 'Main' server configuration 
ServerAdmin [email protected] 
ServerName www.example.com:80 
UseCanonicalName Off 
DocumentRoot "/var/www/html" 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory "/var/www/html"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 
<IfModule mod_userdir.c> 
    UserDir disabled 
</IfModule> 
DirectoryIndex index.html index.html.var 
AccessFileName .htaccess 
<Files ~ "^.ht"> 
    Order allow,deny 
    Deny from all 
</Files> 
TypesConfig /etc/mime.types 
DefaultType text/plain 
<IfModule mod_mime_magic.c> 
    MIMEMagicFile conf/magic 
</IfModule> 
HostnameLookups Off 
#LOG CONFIG LINES REMOVED 
ServerSignature Off 
Alias /icons/ "/var/www/icons/" 
<Directory "/var/www/icons"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 
<IfModule mod_dav_fs.c> 
    DAVLockDB /var/lib/dav/lockdb 
</IfModule> 
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8 
#ICON CONFIG LINES REMOVED 
ReadmeName README.html 
HeaderName HEADER.html 
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t 
#LANGUAGE CONFIG LINES REMOVED 
AddDefaultCharset UTF-8 
AddType application/x-compress .Z 
AddType application/x-gzip .gz .tgz 
AddType application/x-x509-ca-cert .crt 
AddType application/x-pkcs7-crl .crl 
AddHandler send-as-is asis 
AddHandler type-map var 
AddOutputFilter INCLUDES .html .xml 
AddType application/x-httpd-php .php .html 
Alias /error/ "/var/www/error/" 
<IfModule mod_negotiation.c> 
<IfModule mod_include.c> 
    <Directory "/var/www/error"> 
     AllowOverride None 
     Options IncludesNoExec 
     AddOutputFilter Includes html 
     AddHandler type-map var 
     Order allow,deny 
     Allow from all 
     LanguagePriority en es de fr 
     ForceLanguagePriority Prefer Fallback 
    </Directory> 
</IfModule> 
</IfModule> 
#BROWSER MATCH CONFIG LINES REMOVED 
<Location /server-status> 
    SetHandler server-status 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.1 
</Location> 
<Location /server-info> 
    SetHandler server-info 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.1 
</Location> 
### Section 3: Virtual Hosts 
NameVirtualHost *:80 
FcgidMaxRequestLen 2000000 
FcgidMinProcessesPerClass 5 
FcgidIdleTimeout   18000 
FcgidIOTimeout    60 
TraceEnable Off 
SetEnvIf User-Agent ".*MSIE.*" ISIE true 
<VirtualHost *:80> 
    ServerName www.example.com 
    UseCanonicalName off 
    DocumentRoot /etc/httpd/www/examples/ 
    DirectoryIndex index.html index.html.var 
    CheckSpelling on 
    CheckCaseOnly on 
    <Directory /etc/httpd/www/examples/> 
     Options Includes 
     AllowOverride None 
     Order Deny,Allow 
     Allow from all 
     Header Set Cache-Control "max-age=10" 
     ExpiresActive On 
     ExpiresByType text/html "access plus 10 seconds" 
     ExpiresByType image/gif A259200 
     ExpiresByType image/jpg A3600 
     ExpiresByType text/html A259200 
     ExpiresByType image/ico A259200 
     SetOutputFilter DEFLATE 
    </Directory> 
    <Directory /> 
     Order Deny,Allow 
     Deny from All 
    </Directory> 
    #OTHER DIRECTORY CONFIG LINES REMOVED 
</VirtualHost> 

+2

Bạn đang sử dụng máy chủ web nào? Cấu hình mạng của bạn là gì? – Leopd

+0

Đó là sự cố máy chủ.Yêu cầu gì? Kiểm tra cấu hình của bạn. – SLaks

+0

@Leopd, tuyệt đối, tôi đã thêm phiên bản máy chủ được yêu cầu rõ ràng (Apache 2.2.17) – blankabout

Trả lời

1

Tôi đã gặp vấn đề tương tự như gần đây, nhưng bằng cách sử dụng PHP. Vấn đề là tôi đã kích hoạt bộ đệm đầu ra. Vì vậy, ngay sau khi trang của tôi đạt đến một số giới hạn ký tự phép thuật, đầu ra sẽ được gửi (vì bộ đệm đã đầy) và do đó bất kỳ tiêu đề nào được đặt sau thời điểm đó sẽ thất bại. Có thể bạn đang gặp vấn đề tương tự? (Bộ đệm của bạn sẽ có 8K ký tự)

Không chắc chắn bạn đang sử dụng HTML vanilla hay một số ngôn ngữ trung gian ... nhưng tôi sẽ kiểm tra tất cả các cài đặt của tất cả ngôn ngữ/công nghệ có liên quan.

1

8000 ký tự là định nghĩa MAX_STRING_LEN trong mã nguồn Apache

+0

Một sự trùng hợp thú vị hay không? Ai biết được, có thể một ngày câu trả lời sẽ trở nên rõ ràng. – blankabout

Các vấn đề liên quan